1

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

我有一个带有菜单的模板,带有 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

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

提前致谢。

4

1 回答 1

1

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

您基本上还需要定义要包含的视图参数<f:viewParam>index.xhtml或者寻找替代方法。

于 2012-09-07T13:13:31.510 回答