我有一个对话框,我可以从中创建一个人实体,它可以从各种按钮调用,不同的字段可能需要根据当前视图更新。
Persons对话框如下:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<!--CREATE DIALOG-->
<p:dialog header="Create Person" widgetVar="dlgCreatePersons">
<h:form id="createPersonsForm">
<h:panelGrid columns="1" styleClass="dlg-full-width">
....various fields
</h:panelGrid>
<h:panelGroup style="display:block; text-align:center">
<p:commandButton value="Submit" update="@form :messages"
process="@this @form" actionListener="#{person.create}"/>
</h:panelGroup>
</h:form>
<p:ajax event="close" update="createPersonsForm" global="false"
listener="#{person.reset('createPersonsForm')}"/>
</p:dialog>
</ui:composition>
在其他一些表单上,我可能有一个命令按钮,打开这个对话框,根据当前视图更新页面的某些部分,也可能触发不同的侦听器。
<p:commandButton value="+" type="button" onclick="PF('dlgCreatePersons').show()">
<p:ajax event="dialogReturn" update="@form" listener="#{bean.doStuff}/>
</p:commandButton>
正如你在上面看到的,我尝试在这里应用这个例子:http://www.primefaces.org/showcase/ui/dialogFrameworkData.jsf
我理解这与从后台bean中调用的对话框有关,而不是客户端,但是我想知道在这种特定情况下是否有一种方法可以触发 dialgreturn 事件。
dialogReturn
在对话框关闭时被触发。
您可以通过javascript关闭对话框与dlgCreatePersons.hide()
。虽然文档中并没有提到与javascript API相关的事件。
从4.0开始,还可以从后台bean关闭对话框:
public void selectCarFromDialog(Car car) {
RequestContext.getCurrentInstance().closeDialog(car);
}
参见PrimeFaces用户指南,对话框框架