我有一个包含内部表单的主表单(内部表单只出现在编辑案例中) 并且我希望两个表单彼此分开,比提交主表单时内部未提交,怎么做?
这是一个片段:
<h:form id="mainForm">
<!-- some inputs here -->
<h:commandButton value="submit main" action="#{myBean.mainSubmit()}" />
<h:panelGroup rendered="#{myBean.editMode}">
<h:form id="innerForm">
<!-- some inputs here -->
<h:commandButton value="submit inner" action="#{myBean.innerSubmit()}" />
</h:form>
</h:panelGroup>
</h:form>
当前行为:提交mainForm时,也会提交内部表单,但在提交内部表单时,不会提交主表单。
所需行为:提交mainForm时,内部未提交,并且在提交内部时,主要内容也未提交。
答案 0 :(得分:3)
嵌套表单不是您真正希望在页面中拥有的内容......
这种做法怎么样?包装在两个面板中并使用ajax来执行/渲染它们
<h:form id="mainForm">
<h:panelGroup id="FirstPanel" rendered="#{myBean.editMode}">
<!-- some inputs here -->
<h:commandButton value="submit main" action="#{myBean.mainSubmit()}" >
<f:ajax execute="FirstPanel" render="FirstPanel"></f:ajax>
</h:commandButton>
</h:panelGroup>
<h:panelGroup id="SecondPanel" rendered="#{myBean.editMode}">
<!-- some inputs here -->
<h:commandButton value="submit inner" action="#{myBean.innerSubmit()}" >
<f:ajax execute="SecondPanel" render="SecondPanel"></f:ajax>
</h:commandButton>
</h:panelGroup>
</h:form>
您可以放置所需数量<h:panelGroup
,并在f:ajax的渲染执行中添加其ID,例如f:ajax execute="FirstPanel ThirdOne AnotherOne"
...
答案 1 :(得分:0)
我在IE9上遇到内部表单的问题,表单的内容不可显示,所以我删除了内部表单并使用了icefaces的partialSubmit功能,这解决了问题。