Pregunta

Quiero mostrar datos usando el h:dataTable Etiquetas en JSF Los datos que estoy mostrando deben estar en un formato como este:

Name:   XXXX
ID:  8989
Age:    32

He visto varios ejemplos en la web que le dicen cómo mostrar los datos de la misma manera:

Nombre ID Age XXX 8989 32

desde el dataTable la etiqueta solo tiene una subetiqueta h:column y no h:row Tengo problemas con esto.¿Hay una mejor manera de hacer esto?He implementado el primer formato que mencioné usando h:datable y h:column, así que primero escribo todos los encabezados de las columnas en la columna 1 y luego escribo todos los valores en la columna 2.El problema al que me enfrento es que cuando uno de los valores está en blanco, el siguiente valor se imprime en su lugar y los datos aparecen incorrectos; esto es realmente un problema de formato.Cuando los datos están en blanco, debe dejar espacio para ellos y luego imprimir el siguiente valor en la siguiente fila.Espero tener sentido, cualquier idea será muy apreciada.


Intenté agregar lo siguiente:

<h6><h:outputText value="#{empty imeiInfo.userEmail ? '&#160;' : imeiInfo.userEmail}"></h:outputText></h6><br/>

Pero hay un error de sintaxis en esto que no puedo entender, el mensaje que recibo es:

Error de sintaxis en EL

¿Algunas ideas?Gracias.

¿Fue útil?

Solución

¿Es solo para datos que no se repiten? Si es así, use <h:panelGrid>

Por ejemplo:

<h:panelGrid columns="2">
   <h:outputText value="Name:"/>
   <h:outputText value="#{person.name}"/>
   <h:outputText value="ID:"/>
   <h:outputText value="#{person.id}"/>
   <h:outputText value="Age:"/>
   <h:outputText value="#{person.age}"/>
</h:panelGrid>

Si es para repetir datos (es decir, múltiples 'personas'), entonces tiene varias opciones dependiendo de qué otras bibliotecas esté utilizando. Por ejemplo:

1: Cree su propia tabla con Facelets <ui:repeat> (puede hacer lo mismo con <c:for>). Por ejemplo:

<table>
    <ui:repeat value="#{myBean.persons}" var="person">
        <tr>
           <td>
              <h:outputText value="Name:"/>
           </td>
           <td>
              <h:outputText value="#{person.name}"/>
           </td>
        </tr>
        <tr>
           <td>
              <h:outputText value="ID:"/>
           </td>
           <td>
              <h:outputText value="#{person.id}"/>
           </td>
        </tr>
        <tr>
           <td>
              <h:outputText value="Age:"/>
           </td>
           <td>
              <h:outputText value="#{person.age}"/>
           </td>
        </tr>
        <tr>
           <td colspan="2">
              &#160;
           </td>
        </tr>
    </ui:repeat>
</table>

EDITAR: no he intentado esto, pero debería poder rodear el en el primer ejemplo (<=>) con un <=> para representar elementos repetidos. El <=> se procesa antes que el <=>. Debería funcionar.

Otros consejos

No estoy seguro de entender cómo quiere renderizar su tabla. Creo que nos ayudaría si pudiera proporcionar el código JSF de su tabla ...

Sin embargo, con respecto a este punto:

  

Cuando los datos están en blanco, deberían dejar   espacio para ello y luego imprima el siguiente   valor en la siguiente fila

tal vez puedas probar algo así:

<h:outputText value="#{empty aRecord.name ? '&#160;' : aRecord.name}"/>

Este código generará un espacio irrompible si el nombre del registro está vacío; de lo contrario, representará el name del registro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top