渲染面板不会隐藏

时间:2017-04-30 06:20:33

标签: jsf primefaces

我有一个使用Primefaces的小应用程序,JSF允许用户在编辑"编辑文本内容时编辑文本内容。单击按钮。单击编辑按钮时,页面上会显示一个面板,其中包含"退出"按钮,退出编辑模式。一切正常。但是,当用户单击退出按钮时,面板应该再次隐藏。以下是相关代码:

   <p:panel id="editModePanel" rendered="${editorBean.id>0}">
     <p>Edit Mode: All changes will be saved to existing blog post</p>
                  <p:commandButton  accesskey=""value="Exit"
                                     update="@form" 
                                     action="#{editorBean.exitEditMode()}"
                                     onclick="PF('block').show();"
                                     oncomplete="PF('block').hide();"
                                     styleClass="ui-priority-primary"
                                     >
                   </p:commandButton>
            </p:panel>

在呈现面板之前,当用户单击编辑按钮(未显示)时,editorBean.id值将设置为一个数字,该值导致面板在表单提交时呈现。

当用户点击退出退出编辑模式时,editorBe.id设置为null,我已经确认这种情况正在发生。但是,面板不会隐藏,它会保持渲染状态。

我尝试使用onclick打开和关闭面板。但是,视图是Sessionscoped,因此如果用户刷新页面或关闭浏览器窗口,我需要保持状态。

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以这只是一个菜鸟错误。问题是我的支持bean中的变量范围。我在方法中设置了id = null,但是没有设置全局editorBean.id = null。一旦我做出改变,它就完美地发挥了作用。 - 经验教训