Primefaces:更新对话框内容并保持打开状态

baj*_*jla 3 jsf dialog primefaces jsf-2

我正在使用JSF和PrimeFaces,我无法处理以下情况:我有一个对话框,我在其上放置了一个dataTable.在表格的一个单元格中,我想以3种不同的方式显示给定的数据,我想在它们之间切换.到目前为止,我设法通过commandLink在这些渲染类型之间切换,但我的问题是,当我点击其中一个链接时,对话框关闭!我可以更新对话框的内容,并能够同时打开它吗?(我正在通过myMethod更新要使用的渲染类型)

我的commandLink看起来像这样:

<p:commandLink id="id" update=":myForm:myDialog" ajax="false"
               action="#{myBean.myMethod}" oncomplete="dialog.show()">
Run Code Online (Sandbox Code Playgroud)

如果我不使用ajax = false属性,则不调用该方法,我也尝试了imediate = true,但这也不是.

Man*_*uel 5

您需要p:outputPanel在对话框内定义并更新输出面板,而不是对话框本身(这就是对话框关闭的原因):

<p:dialog id="myDialog" ...>
  <p:outputPanel id="myOutputPanel">
    ... your dialog content goes here
  </p>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)

并更改您的commandlink

<p:commandLink id="id" update=":myForm:myDialog:myOutputPanel" ajax="true"
           action="#{myBean.myMethod}" oncomplete="dialog.show()">
Run Code Online (Sandbox Code Playgroud)

关于oncomplete="dialog.show()"- 我不完全确定你是否需要它.如果您提供有关表和代码的更多代码,则可以给出准确的答案.