[英]Retain selected item with primefaces <p:selectManyMenu> while clicking NEXT/BACK of wizard component
在wizard
组件中使用素数<p:selectManyMenu>
时,按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>
当我按下NEXT / BACK按钮时,被选中的itemLabel
将被清空。如何在其中保留所选值?
如我先前的评论中所述,在使用JSF ManagedBeans的Spring 3依赖项注入时, @ViewScoped
bean不起作用。 使用注解或faces-config.xml声明托管bean无关紧要,ViewScoped仍然不会保持对话样式范围。
要解决此问题,我要做的是改用@SessionScoped
,但这可能是个问题,因为下一次用户导航到此页面时,先前的状态仍然存在,您实际上可能希望重置状态。 在离开页面之前,可以通过在actionListener
导航方法actionListener
bean属性设置为默认值来部分解决此问题。 但是,如果用户要在地址栏中手动键入页面然后返回,这将无济于事。 或者,他们在其“收藏夹”或“书签”中存储了您的Web应用程序的一个或多个URL。
解决此问题的更好方法是让您的其他RequestScoped Bean或其他页面特定的Bean在创建时找到特定的SessionScoped Bean,并在其上调用一个公共方法,将您的bean属性重置为其默认值。 或者,您可以简单地从会话中完全删除SessionScoped bean,然后在下次请求时将其重新创建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.