1

おそらく私はここで何かが欠けています。

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が欠落している理由を誰かが私に指摘できますか?

前もって感謝します。

4

1 に答える 1

1

には、ターゲットビューではなく、現在のビューのincludeViewParamsビューパラメータが含まれます。

基本的に、含めるビューパラメータも同様に定義する<f:viewParam>index.xhtml、別のアプローチを探す必要があります。

于 2012-09-07T13:13:31.510 に答える