Frage

Ich möchte Daten anzuzeigen mit den h:dataTable Tags in JSF Die Daten, die ich Anzeigen bin hat in einem Format so sein:

Name:   XXXX
ID:  8989
Age:    32

Ich habe mehrere Beispiele auf dem Netz zu sehen, die Ihnen sagen, wie die angezeigt werden Daten wie folgt aus:

Name ID Alter     XXX 8989 32

Da der dataTable Tag hat nur einen Teil Tag h:column und NO h:row das ich habe, Probleme mit diesem. Gibt es einen besseren Weg, dies zu tun? Ich habe die erste umgesetzt Format erwähnte ich h:datable und h:column verwenden, so ich zuerst alle schreiben, nur die Spaltenüberschriften in Spalte 1 und dann alles, was ich schreiben, um die Werte in column2. Die Frage, die ich bin vor, dass, wenn einer der Werte ist leer, der nächste Wert an seiner Stelle gedruckt wird und die Daten erscheinen falsch, das ist wirklich eine Formatierung Problem. Wenn Daten leer ist, sollte es Platz für sie verlassen und dann den nächsten Wert in der nächsten Zeile drucken. Hoffe, dass ich Sinn mache, werden alle Gedanken sehr geschätzt werden.


Ich habe versucht, das Hinzufügen der unten:

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

Aber es gibt einen Syntaxfehler in diesem, die ich nicht herausfinden kann, ist die Botschaft, die ich erhalte, ist:

  

Syntaxfehler in der EL

Irgendwelche Ideen? Danke.

War es hilfreich?

Lösung

Ist es nur für ein nicht wiederholenden Daten? Wenn ja, Verwendung <h:panelGrid>

Zum Beispiel:

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

Wenn es für sich wiederholende Daten (dh. Mehrere ‚Personen‘), dann haben Sie eine Reihe von Optionen, je nachdem, welche anderen Bibliotheken Sie verwenden. Zum Beispiel:

1: Erstellen Sie Ihre eigenen Tisch mit Facelets <ui:repeat> (Sie das gleiche mit <c:for> tun könnte). Zum Beispiel:

<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: Ich habe nicht versucht, aber Sie sollten die Lage, im ersten Beispiel (<h:panelGrid>) mit einem <c:for> machen sich wiederholende Elemente zu umgeben. Die <c:for> wird vor dem <h:panelGrid> verarbeitet. Sollte funktionieren.

Andere Tipps

Ich bin nicht sicher, zu verstehen, wie Sie Ihren Tisch machen möchten. Ich denke, es würde uns helfen, wenn Sie den JSF-Code Ihrer Tabelle liefern könnten ...

jedoch über diesen Punkt:

  

Wenn Daten leer ist, sollte es lassen   für sie Raum und drucken dann die nächste   Wert in der nächsten Zeile

Vielleicht können Sie versuchen, etwas wie folgt aus:

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

Dieser Code wird einen unzerbrechlichen Platz machen, wenn der Name des Datensatz leer ist, sonst wird die name des Datensatz machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top