我的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"
将处理第一个表单,这是否也适用于多种表单?
答案 0 :(得分:1)
如果你真的需要这个,你可以做一些事情,比如点击按钮时用javascript提交其他表格(是的,你可以这样做,因为你的commandButton是基于ajax提交的),为此你应该使用&#39;的onclick&#39;来自commandButton和invoque&#39;提交&#39;使用表单对象(document.getElementById(&#39; formid&#39;)。submit())。除此之外,我不认为有任何命令按钮本身可以为你做的。
粗略的例子:
<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。
但是,由于您的视图看起来是同质的,您可以使用单个表单替换树形式,并使用内部按钮(如果不需要三个表单......)。
答案 1 :(得分:0)
您无法以这种方式提交多个表单。您需要创建一个收集器表单并提交它。查看here了解更多信息。