导航时将参数传递给新页面的支持 bean

Pass parameter to the backing bean of the new page while navigation

我使用 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}" />

支持 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 的参数?

在重定向之前将您的参数放入 flash:

FacesContext.getCurrentInstance().getExternalContext().getFlash().put(key, value);

重定向后您可以通过以下方式获取:

FacesContext.getCurrentInstance().getExternalContext().getFlash().get(key);