Jsf “PrimeFaces”对话框引用父对象

Jsf “PrimeFaces”对话框引用父对象,jsf,primefaces,facelets,Jsf,Primefaces,Facelets,我有一个xhtml页面,它显示一个带有条目的数据表。我还有一个按钮,可以插入一个新条目,显示一个包含表单的对话框。插入表单在parent.xhtml中用作,如下所示: 父文件 各栏目 ..... ..... 对话框文件 <ui:composition xmlns . . .> <h:form id="subForm"> various input fields ...... ......

我有一个xhtml页面,它显示一个带有条目的数据表。我还有一个按钮,可以插入一个新条目,显示一个包含表单的对话框。插入表单在parent.xhtml中用作
,如下所示:

父文件


各栏目
.....
.....
对话框文件

<ui:composition xmlns . . .>

    <h:form id="subForm">

        various input fields
        ......  
        ......
        <p:commandButton process="@form" update=":mainForm" oncomplete="dlg.hide()"/>

    </h:form>

</ui:composition>

各种输入字段
......  
......
如何一般地引用文件中显示的父组件。简单地说,当我点击对话框中的提交按钮时,我想更新主窗体并隐藏对话框。但是,这些组件位于“父字段”中


这可能应该通过backingBean以编程方式完成,因为我不想在child.xhtml中包含特定于父级的操作,因为如果您想通过
backingBean
中的方法更新
mainForm
,我可能还想将它作为一个独立的.xhtml来使用。修改

<p:commandButton process="@form" action="#{backingBean.method}" oncomplete="dlg.hide()"/>
您只需检查您的
main表单
是否已在另一个表单中。 如果是这样,您需要相应地更改
上下文。更新(…)

此外,如果您想从支持bean更新
mainForm
,我还建议根据处理的输入将对话框隐藏在
backingBean
中。例如,如果某些数据无效,则不希望隐藏该对话框。当前无法使用从服务器收到响应后自动执行的
oncomplete
操作来完成此操作。无论输入是否正确,对话框都会关闭

因此,添加到
方法()


并从<>代码> p:CueMutButs< /Cult> ./P>中删除<代码> OnTrime<代码>。您可以考虑从所包含的XHTML中做一个复合组件。但关于功能的信息很少,无法给你任何进一步的建议。这个问题完全把我弄糊涂了。答案似乎与所询问的内容不匹配(将
参数化,以便在不修改include文件的情况下可用于多个表单),但答案已被接受!我现在不确定你到底在问什么。
<p:commandButton process="@form" action="#{backingBean.method}" oncomplete="dlg.hide()"/>
public void method() {
  // do something
  RequestContext context = RequestContext.getCurrentInstance();
  context.update(":mainForm");
}
if (everythingWentFine) {
  context.execute("dlg.hide();");
}