提交主表单而不提交内部表单

时间:2012-04-08 08:53:05

标签: html forms jsf jsf-2

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

这是一个片段:

<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时,内部未提交,并且在提交内部时,主要内容也未提交。

2 个答案:

答案 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功能,这解决了问题。