嵌套的primefaces数据表不能为最内部的数据表正确提交值

时间:2017-01-26 01:27:52

标签: jsf 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>

我能够正确检索信息并在屏幕上显示,但是当我通过命令按钮发送提交时,所有信息都在发送,但最里面的数据表(id为“transparenciasInplace”)的值是没有以正确的方式发送,在支持bean中我得到以下不正确的信息

我在bean中接收值的方式

  1. Subject1 --- ObjetivesE,ObjetiveF
  2. Subject2 --- null
  3. Subject3 --- null
  4. 我希望和我在屏幕上看到的方式

    1. Subject1 --- ObjetivesA(1个主题和1个目标)
    2. Subject2 --- ObjectiveB,ObjectiveC,ObjectiveD(1个主题和3个目标)
    3. Subject3 --- ObjetivesE,ObjetiveF(1个对象主题和2个对象目标)
    4. 我的命令按钮的代码

      <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

1 个答案:

答案 0 :(得分: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>

我明确地选择了我的来源

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