2017-01-26 64 views
0

我有嵌套數據表的兩個級別中的嵌套primefaces數據表無法正常提交值最裏面的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> 

我能夠檢索信息的形式,並適當在屏幕上呈現的,但是當我送提交通過一個命令按鈕,所有的信息發送,但最內層的數據表(值爲「transparenciasInplace」)沒有以正確的方式發送,在後臺bean中我得到以下信息是不正確的

我收到bean中的值的方式

  1. Subject1 --- ObjetivesE,ObjetiveF
  2. Subject2 ---空
  3. Subject3 ---空

,我所期望的方式和我在屏幕上看到

  1. 主題1 ---目標A(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的值設置爲null

+0

試過了最新的pf版本?試過'saveState'功能? – Kukeltje

+0

其實,我有最新版本的primefaces,我會檢查你建議的saveState,以便檢查我是否可以解決我的問題 – jam

回答

0

所以基本上我需要將我的數據表更改爲p:selectManyCheckbox。這是因爲在數據表我不能區分我的源代碼的形式我的目標在這種特殊情況下,因爲當我寫

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

正在發送的值是我的來源,這是第n行之間共享,我想有是問題,但是如果我們使用類似這樣

<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> 

我清楚地separete我的源

<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"> 
相關問題