Utilisation de java.util.Map dans h: dataTable
J'ai besoin d'afficher Map
à l'aide de <h:dataTable>
. Mon backing bean a un Map
propriété comme ci-dessous:
public class Bean {
private Map<Integer,String> map; //+getter
@PostConstruct
public void init() {
map = new TreeMap<Integer,String>();
map.put(1,"Sasi");
map.put(2,"Pushparaju");
map.put(3,"Venkat Raman");
map.put(3,"Prabhakaran");
}
}
Puis dans la page JSF je suis en train d'essayer de lier ce Map
propriété de la value
attribut de <h:dataTable>
.
<h:dataTable border="1" value="#{bean.map}" var="map">
<h:column id="column1">
<f:facet name="header">
<h:outputText value="UserId"></h:outputText>
</f:facet>
<h:outputText value="#{map.getKey}"></h:outputText>
</h:column>
<h:column id="column2">
<f:facet name="header">
<h:outputText value="Email Id"></h:outputText>
</f:facet>
<h:outputText value="#{map.getValue}"></h:outputText>
</h:column>
</h:dataTable>
Il est donné en erreur getKey
et getValue
n'est pas présent. Je peux comprendre que ce n'est pas la bonne façon de le faire. Comment puis-je présenter une Map
à l'aide de <h:dataTable>
?
source d'informationauteur DRB
Vous devez vous connecter pour publier un commentaire.
Jusqu'à venir JSF 2.3,
UIData
composants tels que<h:dataTable>
<p:dataTable>
etc et<ui:repeat>
ne pas soutien de parcourir unMap
. C'est uniquement pris en charge en<c:forEach>
.Une façon est de convertir la carte les entrées d'un tableau (seul
entrySet()
ne fonctionne pas commeUIData
ne supporte pasSet
jusqu'à venir JSF 2.3).Une autre façon est d'envelopper la carte d'entrée de jeu dans une collection dont le
<h:dataTable>
pouvez parcourir, comme unArrayList
.Cependant, plus propre, auto-documentation et réutilisable est d'utiliser un
List<User>
au lieu où leUser
classe possède les propriétés nécessairesid
etname
.Vous pouvez essayer cette alternative.
Quant à la dernière réponse de prageeth, vous pouvez utiliser entrySet au lieu de clavier; ensuite, vous pouvez vous débarrasser de myBean.carte.obtenir. Voir cet exemple:
Cela fonctionne sur myfaces 2.2.3 comme je l'ai utilisé moi-même.
Annotation: je ferais mieux de a commenté le dernier post, mais ma réputation n'est pas assez élevé, donc c'est un supplément de réponse.