gpt4 book ai didi

java - 保留带有primefaces

while clicking NEXT/BACK of wizard component的选定项目

转载 作者:行者123 更新时间:2023-12-01 15:36:10 25 4
gpt4 key购买 nike

使用 primefaces 时 <p:selectManyMenu>wizard组件时,按 NEXT 和 BACK 按钮时无法保留所选项目。例如在

<h:outputText value="Roles" />
<p:selectManyMenu id="role" value="#{backingBean.rolesList}"
style="height:75px">
<f:selectItems value="#{backingBean.secRole}" var="roles"
itemLabel="# {roles.roleName}" itemValue="#{roles.roleId}">
</f:selectItems>
</p:selectManyMenu>

itemLabel当我按 NEXT/BACK 按钮时,所选内容将被刷新。如何保留所选值?

最佳答案

正如我之前的评论中提到的,在使用 JSF ManagedBeans 的 Spring 3 依赖注入(inject)时,@ViewScoped bean 不起作用。无论您使用注释还是 faces-config.xml 来声明托管 bean,ViewScoped 仍然不会维护对话样式作用域。

我为解决此问题所做的工作是使用 @SessionScoped 代替,但这可能是一个问题,因为下次用户导航到此页面时,之前的状态仍然存在,而您实际上可能会这样希望状态重置。通过在离开页面之前将 actionListener 导航方法上的 bean 属性设置为默认值,可以部分解决此问题。但是,如果用户要在地址栏中手动键入页面,然后返回,这将无济于事。或者,他们可能将您的 Web 应用程序的一个或多个 URL 存储在他们的 Collection 夹或书签中。

解决此问题的更好方法是让其他 RequestScoped bean 或其他页面特定 bean 在创建时找到特定 SessionScoped bean 并调用其公共(public)方法,将 bean 属性重置为其默认值。或者您可以简单地从 session 中完全删除 SessionScoped bean,下次请求时将重新创建它。

关于java - 保留带有primefaces <p :selectManyMenu> while clicking NEXT/BACK of wizard component的选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8818268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com