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