我正在使用JSF和PrimeFaces,我无法处理以下情况: 我有一个对话框,我在上面放了一个dataTable。在表格的一个单元格中,我想以3种不同的方式显示给定数据,并且我想在它们之间切换。到目前为止,我设法通过commandLink在这些渲染类型之间切换,但我的问题是,当我点击其中一个链接时,对话框关闭!我可以更新对话框的内容,并能够同时打开它吗? (我正在通过myMethod更新要使用的渲染类型)
我的commandLink看起来像这样:
<p:commandLink id="id" update=":myForm:myDialog" ajax="false"
action="#{myBean.myMethod}" oncomplete="dialog.show()">
如果我不使用ajax = false属性,则不会调用该方法,我也尝试了imediate = true,但那也不是。
答案 0 :(得分:5)
您需要在对话框中定义p:outputPanel
并更新输出面板,而不是对话框本身(这就是对话框关闭的原因):
<p:dialog id="myDialog" ...>
<p:outputPanel id="myOutputPanel">
... your dialog content goes here
</p>
</p:dialog>
并更改您的commandlink
<p:commandLink id="id" update=":myForm:myDialog:myOutputPanel" ajax="true"
action="#{myBean.myMethod}" oncomplete="dialog.show()">
关于oncomplete="dialog.show()"
- 我不完全确定你是否需要它。如果您提供有关表格和代码的更多代码,则可以给出准确的答案。
答案 1 :(得分:0)
我遇到了同样的问题,解决方案是更新表单而不是对话框。例如:
<p:dialog id="id_dialog" ...>
<h:form id="id_form">
... content
</h>
</p:dialog>
和commandLink:
<p:commandLink update=":id_form" process="@all" ...>
这对我有用!