2

我想从一个页面导航到另一个页面,比如从page1withbean1page2with bean2。我需要从 to 传递一些bean1参数bean2

我想了解如何使用for@ManagedProperty参数和<f:viewParam>. 比如说,我有,并且可以在getter和setter 中使用。我的理解是,我必须在元数据中定义视图参数:<f:metadata>page2field1field2field3bean1bean2page2

<f:metadata>
    <f:viewParam name="field1" value="#{bean2.field1}"/>
    <f:viewParam name="field2" value="#{bean2.field2}"/>
    <f:viewParam name="field3" value="#{bean2.field3}"/>
</f:metadata> 

我不确定在哪里使用注释@ManagedProperty来定义参数field1, field2and field3, in bean1or bean2

page1可以使用"page2?faces-redirect=true&amp;includeViewParams=true"

我可以在我的一种方法中使用相同的方法,而不是在page1响应提交命令链接时说吗?

page1如果我需要在和中都有这三个字段page2,我可以定义那些隐藏字段吗?

4

1 回答 1

4

您需要<f:param><h:link>of中指定它们page1.xhtml

<h:link value="Go to page2" outcome="page2">
    <f:param name="field1" value="#{bean1.field1}" />
    <f:param name="field2" value="#{bean1.field2}" />
    <f:param name="field3" value="#{bean1.field3}" />
</h:link>

然后,您可以使用<f:viewParam>(或@ManagedProperty,但这允许不那么细粒度的验证)将它们设置在 bean 中page2.xhtml

<f:metadata>
    <f:viewParam name="field1" value="#{bean2.field1}" />
    <f:viewParam name="field2" value="#{bean2.field2}" />
    <f:viewParam name="field3" value="#{bean2.field3}" />
</f:metadata>

您不需要通过<h:commandLink>withfaces-redirectincludeViewParamhere 发送 POST 请求。只需一个简单的 GET 请求<h:link>就更简单,对 SEO 也更友好。

也可以看看:

于 2012-03-20T02:17:57.317 回答