从母版页关闭后,在primefaces对话框中销毁数据

时间:2013-12-15 00:42:03

标签: jsf primefaces managed-bean

在我的页面中有一些commandButton打开对话框。 表有300行,关闭HTML对话框后不会破坏并保留在HTML页面中。 我想隐藏后在对话框中销毁数据。然后单击commandButton重复操作加载对话框并在对话框中加载数据。 我找到了这个方法

<p:ajax event="close" update="growl" listener="#{dialogBean.handleClose}"/>

但不知道如何从facescontext中销毁对话框。

2 个答案:

答案 0 :(得分:10)

假设您有以下对话框

<p:dialog id="dialog" widgetVar="dlgVar" dynamic="true" >
  <p:ajax event="close" update="growl" listener="#{dialogBean.handleClose}"
   onstart="PF('dlgVar').content.empty()"/>
</p:dialog>

按钮

<p:commandButton value="Button" 
                 onComplete="PF('dlgVar').show()" 
                 update="dialog">

如果您不需要ajax请求,也可以在对话框的PF('dlgVar').content.empty()中调用onHide

<p:dialog id="dialog" widgetVar="dlgVar" 
          dynamic="true"
         onHide="PF('dlgVar').content.empty()">
</p:dialog>

答案 1 :(得分:1)

我认为这可以帮到你。
假设你有一个commandButton:

<p:commandButton id="button" value="Button" actionListener="#{dialogBean.populateDataTable}" onComplete="yourDialog.show()" update="@form">

现在您的<p:dialog>将如下所示:

<p:dialog  widgetVar="yourDialog" dynamic="true" >
    <p:dataTable value="#{dialogBean.yourList}"..........> ...   </p:dataTable>
</p:dialog>

您必须在actionlistaner中填充dataTable的数据。当<p:dataTable>占用yourList dialogBean时,请从数据库中获取变量yourList的数据。

public void populateDataTable(ActionEvent event) {
    //Populate data here to be shown in `<p:dataTable>` inside `<p:dialog>`
    //yourList = new ArrayList<yourObject>();
    //allresult = fetchdataFromDB();
    //yourList.addAll(allresult);
}