在我的页面中有一些commandButton打开对话框。 表有300行,关闭HTML对话框后不会破坏并保留在HTML页面中。 我想隐藏后在对话框中销毁数据。然后单击commandButton重复操作加载对话框并在对话框中加载数据。 我找到了这个方法
<p:ajax event="close" update="growl" listener="#{dialogBean.handleClose}"/>
但不知道如何从facescontext中销毁对话框。
答案 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);
}