我有一个使用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,因此如果用户刷新页面或关闭浏览器窗口,我需要保持状态。
提前致谢!
答案 0 :(得分:0)
所以这只是一个菜鸟错误。问题是我的支持bean中的变量范围。我在方法中设置了id = null,但是没有设置全局editorBean.id = null。一旦我做出改变,它就完美地发挥了作用。 - 经验教训