0

我的 jsf 应用程序中有几个表单,我想从其中一些表单中提交我的数据以将数据保存在数据库中。

我的xhtml样子是这样的:

<h:panelGroup id="tempOptionGroup">
<h:form id="tempOptionForm" >
...
</h:form>
</h:panelGroup>

<h:form id="2Form" >
...
</h:form>


<h:panelGroup id="panel">
<h:form id="3Form">
...
</h:form>
<h:panelGroup>

<h:form id="buttonForm">
<p:commandButton value="Submit"
action="#{Bean.callPersist}" style="margin-top:5px"
id="submit" />
</h:form>

如何用一张提交所有这 3 种表格p:commandButton

更新

我查了一些属性,h:commandButton我读到它process=":tempOptionGroup:tempOptionForm"会处理第一个表单,这也适用于几种表单吗?

4

2 回答 2

1

如果您真的需要这个,您可以在单击按钮时使用 javascript 提交其他表单(是的,您可以这样做,因为您的 commandButton 是基于 ajax 提交的),为此您应该使用 commandButton 和 invoque 中的“onclick”使用表单对象 (document.getElementById('formid').submit()) “提交”。除此之外,我认为 commandButton 本身并不能为您做任何事情。

粗略的例子:

    <script>
        function submitOthers(){
            document.getElementById('form1').submit();
            document.getElementById('form2').submit();
        }
    </script>

    <h:form id="form1">
    </h:form>
    <h:form id="form2">
    </h:form>
    <h:form id="form3">
        <p:commandButton onclick="submitOthers()" ></p:commandButton>
    </h:form>

如果刷新页面,您可以(丑陋地)以彼此的形式添加隐藏的 commandButton,并执行类似的 javascript 来获取按钮并在它们上调用 click()。在这种情况下,提交将是 ajax。


但是,由于您的视图看起来是同质的,您可以用单个表单替换您的树形表单,其中包含按钮(如果不需要三个表单......)。

于 2013-06-07T14:40:52.543 回答
0

不能以这种方式提交多个表格。您需要创建一个收集器表单并提交它。在这里查看更多信息。

于 2013-06-07T14:47:26.307 回答