2012-09-07 50 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

相關問題