我的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>


如何用一个p:commandButton提交所有这三种表格

更新

我查看了h:commandButton的某些属性,并且阅读到process=":tempOptionGroup:tempOptionForm"将处理第一种形式,这对几种形式也适用吗?

最佳答案

如果您确实需要这样做,则可以执行类似单击按钮时使用javascript提交其他表单的操作(是的,因为commandButton基于ajax提交,所以可以这样做),为此您可以使用commandButton中的“ 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。



但是,由于您的视图似乎是同质的,因此您可以将树形窗体替换为带有窗体内部按钮的单个窗体(如果不需要三种窗体...)。

07-27 21:23
查看更多