2012-08-24 24 views
5

Estoy usando datatable y obtengo el número de columnas dinámicamente. He intentado poner repita el interior como el de esta manera:jsf repeat inside datatable

<h:dataTable value="#{movieUserBean.sits}" var="row" 
     rowClasses="oddRows,evenRows" headerClass="header" 
     styleClass="table" cellpadding="5" cellspacing="0"> 

     <ui:repeat value="#{row}" var="sit"> 
      <h:column> 
      <h:selectBooleanCheckbox value= "#{movieUserBean.checked[sit.id]}"/> 
      </h:column> 
     </ui:repeat> 

que se encuentra es una matriz de dos dimensiones, mi pensamiento fue que tabla de datos debe reproducirse sobre los abdominales filas y repetir los bucles sobre cada valor dentro de cada fila (que es un objeto llamado Sit with get method: getId).

El problema es que me sale una mesa vacía. Parece que var "sit" no está obteniendo valor. ¿Puede el problema ser el hecho de que datatable ignora los elementos que no están en el alcance de la columna?

Respuesta

0

Una solución sencilla sería

<table> 
    <ui:repeat value="#{movieUserBean.sits}" var="row"> 
    <tr> 
     <ui:repeat value="#{row}" var="sit"> 
      <td><h:selectBooleanCheckbox value= "#{movieUserBean.checked[sit.id]}"/></td> 
    </ui:repeat> 
    </tr> 
    </ui:repeat> 
</table> 

Si tiene columnas variables por fila se podría estropear arriba con estilos CSS. Por ejemplo, 5 columnas en la fila uno y 3 columnas en la fila 2, ¿cómo las diseñarías? De la forma en que lo veo, quieres mostrar los asientos en un teatro ocupado con una casilla de verificación.

Puede intentar usar ui: repeat's con ul, li o div's en lugar de ir con la tabla. enfoque.