Domanda

Voglio visualizzare i dati usando i tag h:dataTable in JSF I dati che sto visualizzando devono essere in un formato come questo:

Name:   XXXX
ID:  8989
Age:    32

Ho visto diversi esempi sul web che spiegano come visualizzare il file dati come questo:

Nome ID Età     XXX 8989 32

Poiché il tag dataTable ha solo un tag secondario h:column e NO h:row sto avendo problemi con questo. C'è un modo migliore per farlo? Ho implementato il primo formato che ho citato usando h:datable e <=>, quindi prima scrivo tutte le intestazioni di colonna nella colonna 1 e poi scrivo tutti i valori nella colonna2. Il problema che sto affrontando è che quando uno dei valori è vuoto, il valore successivo viene stampato al suo posto e i dati appaiono errati, questo è davvero un problema di formattazione. Quando i dati sono vuoti, dovrebbero lasciare spazio per essi e quindi stampare il valore successivo nella riga successiva. Spero di avere un senso, ogni pensiero sarà molto apprezzato.


Ho provato ad aggiungere quanto segue:

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

Ma c'è un errore di sintassi in questo che non riesco a capire, il messaggio che ricevo è:

  

Errore di sintassi in EL

Qualche idea? Grazie.

È stato utile?

Soluzione

È solo per dati non ripetitivi? In tal caso, utilizzare <h:panelGrid>

Ad esempio:

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

Se è per la ripetizione di dati (es. più "persone"), allora hai una serie di opzioni a seconda di quali altre librerie stai usando. Ad esempio:

1: crea il tuo tavolo usando Facelets <ui:repeat> (puoi fare lo stesso con <c:for>). Ad esempio:

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

EDIT: non ho provato questo, ma dovresti essere in grado di circondare il primo esempio (<=>) con un <=> per renderizzare elementi ripetitivi. Il <=> viene elaborato prima del <=>. Dovrebbe funzionare.

Altri suggerimenti

Non sono sicuro di capire come vuoi rendere il tuo tavolo. Penso che ci sarebbe di aiuto se tu potessi fornire il codice JSF della tua tabella ...

Tuttavia, riguardo a questo punto:

  

Quando i dati sono vuoti, dovrebbero lasciare   spazio per esso e quindi stampare il successivo   valore nella riga successiva

forse puoi provare qualcosa del genere:

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

Questo codice renderà uno spazio indistruttibile se il nome del record è vuoto, altrimenti renderà il name del record.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top