【问题标题】:JSF view-param only works from same pageJSF 视图参数仅适用于同一页面
【发布时间】:2012-09-07 13:09:46
【问题描述】:

可能我在这里遗漏了一些东西。

我有一个带有菜单的模板,带有 JSF 页面的选项传递参数:

<rich:menuItem label="Todos" action="#{mainMenuCtrl.listTickets}">
  <f:param name="baseLocation" value=""/>
  <f:param name="ticketStatus" value="Solicitado"/>
</rich:menuItem>
<rich:menuItem label="H. General" action="#{mainMenuCtrl.listTickets}">
  <f:param name="baseLocation" value="HGN"/>
  <f:param name="ticketStatus" value="Solicitado"/>
</rich:menuItem>

控制器只是重定向到页面:

public String listTickets() {
  return "ticketsList.xhtml?faces-redirect=true&includeViewParams=true";
}

ticketList.xhtml 有 metadata 部分:

<f:metadata>
  <f:viewParam name="baseLocation" value="#{ticketsListCtrl.baseLocation}" converter="es.caib.gesma.gesman.data.converter.LocationConverterByShortCode"/>
  <f:viewParam name="ticketStatus" value="#{ticketsListCtrl.ticketStatus}" converter="es.caib.gesma.gesman.data.converter.TicketStatusConverter"/>
  <f:event type="preRenderView" listener="#{ticketsListCtrl.retrieveTickets()}" />  
</f:metadata>

问题是,当我在另一个使用相同模板的页面 (index.xhtml) 上时,单击任何菜单项都会让我感到ticketsList.xhtml 但两个参数都是空的。

../ticketsList.xhtml?baseLocation=&ticketStatus=

当我从ticketsList.xhtml 中单击同一项目时,它会显示正确的 URL,并且从那里一切正常。

../ticketsList.xhtml?baseLocation=HGN&ticketStatus=Solicitado

谁能指出我为什么从其他页面点击时缺少视图参数?

提前致谢。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    includeViewParams 将包含 当前 视图的视图参数,而不是目标视图的视图参数。

    您基本上还需要在index.xhtml 中将要包含的视图参数定义为&lt;f:viewParam&gt;,或者寻找替代方法。

    【讨论】:

    • 有几页(还有更多),从stackoverflow.com/questions/7344056/…看来我不能把它放在模板中。剩下的唯一选择是ManagedProperty?
    • 这是最好的选择,是的。最好为此设计一个单独/不同的请求范围 bean。
    • “单独/不同的请求范围bean”是指一个bean只用于两个参数,由接收页面的bean使用?不然看不懂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2013-07-08
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多