2012-09-07 29 views
1

也许我在这里失去了一些东西。JSF查看参数仅适用于同一页面

我有一个菜单模板,使用选项P将参数到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"; 
} 

而且ticketsList.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单击相同的项目,它显示了正确的网址,并从有什么好的工作。

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

任何人都可以指向我为什么浏览参数从其他页面点击时丢失?

在此先感谢。

回答

1

includeViewParams将包含视图的视图参数,而不包括目标视图的视图参数。

您基本上需要定义包含<f:viewParam>的待包含视图参数,也可以在index.xhtml中定义,或者查找替代方法。

+0

有几个页面(还有更多未来)和从http://stackoverflow.com/questions/7344056/jsf2-how-achieve-site-wide-viewparam-handling-policy-using-a-template看来我不能把它放在模板中。剩下的唯一选择是'ManagedProperty'? – SJuan76

+0

这是最好的选择,是的。最好的办法是为此设计一个单独/不同的请求作用域bean。 – BalusC

+0

“独立/独立请求作用域bean”意味着一个只有两个参数的bean才能被接收页面的bean使用?否则我不明白。 – SJuan76

相关问题