おそらく私はここで何かが欠けています。
JSFページにパラメータをpassignするオプションを備えたメニュー付きのテンプレートがあります。
<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
、正しいURLが表示され、そこから何でも問題なく動作します。
../ticketsList.xhtml?baseLocation=HGN&ticketStatus=Solicitado
他のページからクリックしたときにview-paramsが欠落している理由を誰かが私に指摘できますか?
前もって感謝します。