【问题标题】:JSF 2.0 view scope not workingJSF 2.0 视图范围不起作用
【发布时间】:2012-08-15 03:47:19
【问题描述】:

我在我的应用程序中使用 PrimeFaces,其中我有一个填充了数据的数据表。我也有一个编辑命令按钮。

现在我想打开一个新的 JSF 页面。执行此操作的操作绑定到视图范围内的支持 bean。在 action 方法中我可以访问 bean 的值,但是在新的 JSF 页面上我不能再访问这个 bean 的任何值了。

这是我的代码:

<p:commandLink title="Edit" id="editBtn" action="#{personRegisterController.selectPerson}">
    <f:setPropertyActionListener value="#{person}" target="#{personRegisterController.personBean}"/>
</p:commandLink>

【问题讨论】:

    标签: java jsf jsf-2 primefaces


    【解决方案1】:

    JSF 中的视图范围是只需要一个视图(页面)的范围。因此,只要您回发到同一个视图,您就会保留视图范围 bean 的数据。

    但是,一旦您导航到新视图,就会启动新的视图范围。换句话说,您不能使用视图范围在视图之间(不同页面的请求之间)传输数据。

    有关如何进行此传输的一种可能解决方案,请参阅此答案:p:commandButton doesn't execute f:setPropertyActionListener in JSF 2

    顺便说一句,请注意setPropertyActionListener 对于您在此处执行的操作不是必需的。您可以将数据直接提供给您的操作方法:

    <p:commandLink action="#{personRegisterController.selectPerson(person)}"/>
    

    【讨论】:

    • 我在我的 selectPerson(person) 方法中传递了 person 并在我的方法中获取 person 的所有值,但是我如何在我的 editPerson.xthml 页面中获取这个 person 值并告诉我我更改范围请求或设置它作为视图范围
    • @Piyush 有关如何进行此传输的一种可能解决方案,请参阅此答案:stackoverflow.com/questions/12025720/…
    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 2012-10-11
    • 2011-11-26
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2011-11-18
    • 2012-09-29
    相关资源
    最近更新 更多