Question

Je souhaite afficher des données à l'aide des balises h:dataTable dans JSF Les données que j'affiche doivent être dans un format comme celui-ci:

Name:   XXXX
ID:  8989
Age:    32

J'ai vu plusieurs exemples sur le Web qui vous expliquent comment afficher le des données comme celle-ci:

Nom Identité Age     XXX 8989 32

Étant donné que la balise dataTable ne comporte qu'une sous-balise h:column et NON h:row je rencontre problèmes avec cela. Y a-t-il une meilleure manière de faire cela? J'ai mis en place le premier J'ai déjà mentionné le format avec h:datable et <=>, c'est pourquoi je commence par écrire tous les en-têtes de colonne de la colonne 1, puis toutes les valeurs de la colonne2. Le problème auquel je suis confronté est que, lorsqu'une des valeurs est vide, la valeur suivante est imprimée à sa place et que les données semblent fausses, il s'agit en réalité d'un problème de mise en forme. Lorsque les données sont vides, elles doivent laisser de la place, puis imprimer la valeur suivante dans la rangée suivante. J'espère avoir un sens, toutes les pensées seront très appréciées.

J'ai essayé d'ajouter ce qui suit:

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

Mais il y a une erreur de syntaxe que je ne peux pas comprendre, le message que je reçois est le suivant:

  

Erreur de syntaxe dans EL

Des idées? Merci.

Était-ce utile?

La solution

Est-ce juste pour des données non répétitives? Si oui, utilisez <h:panelGrid>

Par exemple:

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

S'il s'agit de répéter des données (c'est-à-dire plusieurs personnes), vous avez plusieurs options en fonction des autres bibliothèques que vous utilisez. Par exemple:

1: Construisez votre propre table en utilisant Facelets <ui:repeat> (vous pouvez faire la même chose avec <c:for>). Par exemple:

<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: Je n'ai pas essayé cette solution, mais vous devriez pouvoir entourer le premier exemple (<=>) d'un <=> pour restituer les éléments répétés. Le <=> est traité avant le <=>. Devrait fonctionner.

Autres conseils

Je ne suis pas sûr de comprendre comment vous voulez rendre votre table. Je pense que cela nous aiderait si vous pouviez fournir le code JSF de votre table ...

Cependant, concernant ce point:

  

Lorsque les données sont vierges, elles doivent laisser   espace pour cela et ensuite imprimer la prochaine   valeur dans la rangée suivante

Peut-être que vous pouvez essayer quelque chose comme ça:

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

Ce code générera un espace incassable si le nom de l’enregistrement est vide, sinon, il rendra le name de l’enregistrement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top