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