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

时间:2014-07-10 08:54:02

标签: jsf jsf-2 primefaces dialog

我正在使用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,但那也不是。

2 个答案:

答案 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" ...>

这对我有用!