2017-01-26 16 views
0

У меня есть два уровня вложенности DataTables в видеВложенные primefaces DataTable не подчиняющееся значение должным образом для внутреннего DataTable

<p:dataTable id="necesidades" 
      value="#{registrarAccionDosBean.accionDos.necesidadesConTema}" 
      rendered="#{not empty registrarAccionDosBean.accionDos.necesidadesConTema}" 
      var="necesidad" 
      rowKey="#{necesidad.idNecesidad}"> 
    <p:column style="width:16px"> 
     <p:rowToggler /> 
    </p:column> 
    <p:rowExpansion> 
     <h:panelGroup id="grupoTema"> 
      <h:panelGroup id="edicion" rendered="#{necesidad.tema.idTema ne null}"> 
       <p:row> 
       <p:column > 
        <h:outputLabel value="#{etiq.lbl_comunes_requerido} #{etiq.etiqueta_checkbox_transparenciasFocalizadas}" styleClass="textoAcciones"/> 
       </p:column> 
       <p:column > 
        <!-- Nested data table --> 
        <p:dataTable id="transparenciasInplace" 
          var="transparencias" 
          value="#{registrarAccionDosBean.transparenciasFocalizadas}" 
          selection="#{necesidad.tema.transparenciasFocalizadas}" 
          rowKey="#{transparencias.idTf}"> 
         <f:facet name="header"> 
          Objetives 
         </f:facet> 
         <p:column selectionMode="multiple" style="width:16px;text-align:center"/> 
         <p:column> 
          <h:outputLabel value="#{transparencias.descripcion}" styleClass="textoAccionesSmall"/>   
         </p:column> 
        </p:dataTable> 
       </p:column> 
       </p:row> 
      </h:panelGroup> 
     </h:panelGroup> 
    </p:rowExpansion> 
</p:dataTable> 

Я могу получить информацию и представлен на экране правильно, но когда я отправить отправить через командную кнопку вся информация отправляется, но значения самого внутреннего datatable (тот, который является идентификатором «transparentenciasInplace») не отправляются правильным способом, в бэкэнд-бэке я получаю следующую информацию, которая является неправильной

Способ получения значений в компоненте

  1. Subject1 --- ObjetivesE, ObjetiveF
  2. Subject2 --- нулевой
  3. Subject3 --- нулевой

То, как я ожидал, и я вижу на экране

  1. Предмет 1 --- ОбъектыА (1 объект предмета и 1 объект Цель)
  2. Subject2 --- ObjectiveB, ObjectiveC, ObjectiveD (1 объект предмет и 3) объекты Объективные
  3. Subject3 --- ObjetivesE, ObjetiveF (1 объект предмет и 2 объекта) Объективные

Код моей команды кнопка

<p:commandButton process="@form" icon="ui-icon ui-icon-disk" id="btnsave" 
          value="Save"        actionListener="#registrarAccionDosBean.guardar}" 
          widgetVar="btnguardar" 
          onclick="setTimeout('btnguardar.disable()', 10);"         title="#{etiq.btn_guardar}" update="content"/> 

Я не знаю, почему в subject1 я получаю значение Subject3 и значение Subject2 и Subject3 устанавливает нулевое значение

+0

Пробовал последнюю версию pf? Пробовал функциональность «saveState»? – Kukeltje

+0

На самом деле, у меня есть последняя версия простых шрифтов, и я собираюсь проверить SaveState, который вы предлагаете, чтобы проверить, могу ли я решить свою проблему – jam

ответ

0

Так что в основном мне нужно изменить свой datatable на p: selectManyCheckbox. Это потому, что в DataTable я не могу отличить мой источник сформировать свою цель в данном случае, потому что, когда я пишу

<p:dataTable id="transparenciasInplace" 
         var="transparencias" 
         value="#{registrarAccionDosBean.transparenciasFocalizadas}" 
         selection="#{necesidad.tema.transparenciasFocalizadas}" 
         rowKey="#{transparencias.idTf}"> 
        . 
        . 

Значение, которое посылает мой источник, и это распределяется между п строк и я думаю, была проблема, но если мы будем использовать что-то вроде этого

<p:selectManyCheckbox id="transparenciasInplace" value="#{necesidad.tema.transparenciasFocalizadas}" layout="pageDirection" columns="1" converter="transparenciaConverter" style="table-layout: auto;font-weight: bold; text-align: justify;font-size :15px"> 
         <f:selectItems value="#{registrarAccionDosBean.transparenciasFocalizadas}" var="transparenciaC" itemLabel="#{transparenciaC.descripcion}" itemValue="#{transparenciaC}" /> 
    </p:selectManyCheckbox> 

Я ясно мой источник раздельный

<f:selectItems value="#{registrarAccionDosBean.transparenciasFocalizadas}" var="transparenciaC" itemLabel="#{transparenciaC.descripcion}" itemValue="#{transparenciaC}" /> 

от цели (значение, которое я хочу отправить)

<p:selectManyCheckbox id="transparenciasInplace" value="#{necesidad.tema.transparenciasFocalizadas}" layout="pageDirection" columns="1" converter="transparenciaConverter" style="table-layout: auto;font-weight: bold; text-align: justify;font-size :15px">