繁体   English   中英

保留带有主字体的所选项目 <p:selectManyMenu> 在单击向导组件的NEXT / BACK时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM