2013-06-02 42 views
1

我想从overlayPanel提交值形式的JSF页面豆与复选框是这样的: enter image description hereJSF PrimeFaces overlayPanel提交值

,才能显示重叠面板和我使用此代码AJAX提交,看看它在调试OK :

<p:commandButton id="joinBtn" value="Basic" type="button" disabled="#{dataPropertyCurrent.notJoinable}"/> 
<p:overlayPanel id="joinPanel" for="joinBtn" appendToBody="true" dynamic="false"> 
    <f:facet name="header">Details</f:facet> 
    <p:dataList value="#{treeBean.getDataPropsCouldBeJoinedWith(dataPropertyCurrent)}" type="definition" var="dataJoinVal"> 
     <h:panelGrid columns="2" cellpadding="10"> 
      <h:column> 
       <p:selectBooleanCheckbox value="#{dataJoinVal.checked}" id="cbID"> 
        <p:ajax event="change" update="cbID" partialSubmit="true"/> 
       </p:selectBooleanCheckbox> 
      </h:column> 
      <h:column> 
       <h:outputText value="#{dataJoinVal.caption}" /> 
      </h:column> 
     </h:panelGrid> 
    </p:dataList> 
    <!--<p:commandButton value="Apply" id="btnApplyJoin" type="button" process="@parent" />--> 
    <h:outputLabel value="ID: #{dataPropertyCurrent.joinDataPropertyId}" /> 
</p:overlayPanel> 

之后却当overlayPanel是隐藏的表单提交按钮被按下,此代码:

<p:commandButton value="Apply join" update="joinAccordionPanel,dsAccordionPanelMain" actionListener="#{treeBean.applyJoinOptions}" /> 
  • 它将bean的布尔值再次设置为“false”。

那么如何正确提交overlayPanel值到bean呢?

PrimeFaces版本:3.5

+0

你是什么意思'它集“假”,以豆布尔值again.'是什么意思?布尔值的值是否在任何时候,还是非基本的布尔值? – user1983983

+0

首先,通过ajax事件将bean的布尔值设置为'true',但在此之后,当按下“submit”按钮以传输更多表单数据时,它会尝试将bean设置为“boolean var”。 – Sergii

+0

你可以发布'treeBean.applyJoinOptions'的代码吗? – user1983983

回答

1

我发现解释在这里:http://forum.primefaces.org/viewtopic.php?f=3&t=30550#p97737

“如果你正在使用appendToBody,强烈建议有用于包装所有输入字段的overlayPanel组件内部形式和按钮,这就是你在最后一个解决方案中所做的,但这意味着由于嵌套表单的限制,你不能将overlayPanel放在另一个表单中,最好的解决方法是避免appendToBody绝对有必要。”

编辑

我添加<h:form>内overlayPanel,现在它工作正常:

<p:overlayPanel id="joinPanel" for="joinBtn" appendToBody="true" dynamic="true" > 
    <h:form id="formTmp"> 
    <f:facet name="header">Details</f:facet> 
    <p:dataList value="#{treeBean.getDataPropsCouldBeJoinedWith(dataPropertyCurrent)}" type="definition" var="dataJoinVal"> 
     <h:panelGrid columns="2" cellpadding="10"> 
      <h:column> 
       <p:selectBooleanCheckbox value="#{dataJoinVal.checked}" id="cbID"> 
        <p:ajax event="change" update="cbID" partialSubmit="true"/> 
       </p:selectBooleanCheckbox> 
      </h:column> 
      <h:column> 
       <h:outputText value="#{dataJoinVal.caption}" /> 
      </h:column> 
     </h:panelGrid> 
    </p:dataList> 
    </h:form> 
</p:overlayPanel>