0

我有一个包含内部表单的主表单(该内部表单仅出现在编辑案例中)并且我希望两个表单彼此分开,而不是在提交主表单时内部没有提交,该怎么做?

这是一个片段:

<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 时也提交了内部表单,但提交内部表单时未提交 main。

Desired Behavior:提交mainForm时,内部没有提交,提交内部时,main也没有提交。

4

2 回答 2

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数量的内容,并将它们的 id 添加到 f:ajax 的渲染执行中,例如f:ajax execute="FirstPanel ThirdOne AnotherOne"...

于 2012-04-08T09:16:03.917 回答
0

我在 IE9 上遇到了内部表单的问题,表单的内容无法显示,所以我删除了内部表单并使用了 icefaces 的部分提交功能,从而解决了问题。

于 2012-04-22T09:03:21.900 回答