Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用primefaces保留所选项目<;p:selectManyMenu>;单击向导组件的下一步/上一步时_Java_Spring_Google App Engine_Jsf 2_Primefaces - Fatal编程技术网

Java 使用primefaces保留所选项目<;p:selectManyMenu>;单击向导组件的下一步/上一步时

Java 使用primefaces保留所选项目<;p:selectManyMenu>;单击向导组件的下一步/上一步时,java,spring,google-app-engine,jsf-2,primefaces,Java,Spring,Google App Engine,Jsf 2,Primefaces,在向导组件中使用primefaces时,按下“下一步”和“上一步”按钮时无法保留所选项目。例如在 <h:outputText value="Roles" /> <p:selectManyMenu id="role" value="#{backingBean.rolesList}" style="height:75px"> <f:selectItems value="#{backingBean.secRole}" var="roles"

向导
组件中使用primefaces
时,按下“下一步”和“上一步”按钮时无法保留所选项目。例如在

<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
selected将被清除。我如何在那里保留所选的值?

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

我要解决这个问题的方法是使用
@SessionScoped
,但是这可能是一个问题,因为用户下次导航到此页面时,上一个状态仍然存在,您可能确实希望重置该状态。在导航离开页面之前,通过在
actionListener
导航方法中将bean属性设置为默认值,可以部分解决这个问题。但是,如果用户手动在地址栏中键入一个页面,然后返回,则这不会有帮助。或者他们的收藏夹或书签中存储了您的web应用程序的一个或多个URL


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

这里的空白是您的帖子中偶然出现的,还是您的代码实际上就是这样的
“#{roles.roleName}”
?如果这是您的实际代码,请删除该空格,这是不正确的。@maple_shaft:对不起,该空格是意外的!@J4mes先生:是的,它是@ViewScoped.@ni.ep您是在项目中使用托管bean的Spring依赖注入还是使用Spring EL解析器<代码>@ViewScoped在JSF2与Spring3集成时不起作用。您必须改用
@SessionScoped
,并在导航操作中将托管bean重置到远离页面的位置。@maple\u shaft:谢谢,我使用的是Spring 3。如何重置
@ManagedBean
?是否可以通过添加faces-config.xml并调用类似-
@组件(“backingBean”)
而不使用backingBean.java中的
@ManagedBean
注释?如果出了问题,请纠正我!这是这里发布的primefaces排序问题的根本原因吗?