【发布时间】:2019-10-16 23:59:40
【问题描述】:
我使用 commandLink 导航到另一个页面:
<t:commandLink action="go_orderForm" immediate="true">
<h:outputText value="#{order.number}" />
<t:updateActionListener property="#{orderForm.orderId}"
value="#{order.id}" />
</t:commandLink>
这是有效的,并将 order.id 的值设置为支持 bean orderForm.orderId。
在另一个地方,我使用 commandButton 在当前页面的后台 bean 中调用一个动作,然后导航到新页面:
<h:commandButton value="Create Batch" action="#{orderList.createBatchOrder}" />
backing bean 中的动作如下所示:
public String createBatchOrder() {
// do something
return "go_orderForm";
}
faces-config.xml 包含
<navigation-rule>
<navigation-case>
<from-outcome>go_orderForm</from-outcome>
<to-view-id>/orderForm.jsp</to-view-id>
</navigation-case>
</navigation-rule>
当我使用支持 bean 中的操作进行导航时,如何传递 orderForm.orderId 的参数?
【问题讨论】:
-
您的意思是像闪存范围那样共享变量?
-
答案取决于您使用的是 JSF 1.x 还是 2.x。 Tomahawk 组件库和 XML 导航规则的使用表明您实际上仍在使用侏罗纪 JSF 1.x。然而,下面 L.dev 的答案仅适用于 JSF 2.x。 JSF 2.x 是十多年前推出的。不能升级到 JSF 2.x 吗?尽管如此,正确的答案取决于您是否希望目标页面是幂等的。下面 L.dev 的答案假设它不是幂等的(即当您简单地刷新页面时,您可能会再次丢失此信息,不确定这是否是您想要的)。