2013-06-02 6 views
1

Я хотел бы представить страницу JSF формы значения бин из overlayPanel с флажком, как это: enter image description hereJSF PrimeFaces overlayPanel представить значение

Чтобы показать наложение панель и представление AJAX я использую этот код, и посмотреть, что это нормально в отладчике :

<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}" /> 
  • снова устанавливает значение «false» в bean boolean value.

Итак, как правильно передать значение overlayPanel для bean-компонента? версия

PrimeFaces: 3,5

+0

Что вы имеете в виду 'он устанавливает "ложь" в боб логическое значение again.'? Является ли значение логического значения истинным в любое время или это не примитивный 'Boolean'? – user1983983

+0

Во-первых, булевское значение bean было установлено как «true» через событие ajax при отмеченном флажке, но после этого, когда кнопка «отправить» нажата для переноса еще нескольких данных формы, она пытается установить «false» в bean boolean var. – Sergii

+0

Не могли бы вы отправить код 'treeBean.applyJoinOptions'? – user1983983

ответ

1

Я нашел объяснение: http://forum.primefaces.org/viewtopic.php?f=3&t=30550#p97737:

«Если вы используете appendToBody, то настоятельно рекомендуется иметь форму внутри компонента overlayPanel, который охватывает все поля ввода и кнопки. Это то, что вы сделали в своем последнем решении. Однако это означает, что вы не можете поместить overlayPanel внутри другой формы на страницу xhtml из-за ограничения на формы вложенности. Лучшее решение, как правило, должно избегать 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> 
Смежные вопросы