JSTL foreach sur enum
J'ai une contant liste déclaré en java à l'aide d'un type enum, qui doivent s'affiche dans une jsp.
Java déclaration d'enum :
public class ConstanteADMD {
public enum LIST_TYPE_AFFICHAGE {
QSDF("qsmldfkj"), POUR("azeproui");
private final String name;
@Override
public String toString() {
return name;
}
private LIST_TYPE_AFFICHAGE(String name) {
this.name = name;
}
public static List<String> getNames() {
List<String> list = new ArrayList<String>();
for (LIST_TYPE_AFFICHAGE test : LIST_TYPE_AFFICHAGE.values()) {
list.add(test.toString());
}
return list;
}
}
}
<select name="typeAffichage" id="typeAffichage">
<c:forEach var="type" items="${netcsss.outils.ConstanteADMD.LIST_TYPE_AFFICHAGE.names}">
<option value="${type}">${type}</option>
</c:forEach>
</select>
où :
<select name="typeAffichage" id="typeAffichage">
<c:choose>
<c:when test="${catDecla ne null}">
<option
value="<%=catDecla.getCatDecla().getSTypeAffichage()%>"
selected="selected"><%=catDecla.getCatDecla().getSTypeAffichage()%></option>
</c:when>
</c:choose>
<%List<String> list = ConstanteADMD.LIST_TYPE_AFFICHAGE.getNames();
for(String test : list) {
%>
<option value="<%=test%>"><%=test%></option>
<%}%>
</select>
Fonctionne très bien.
Est-il une limitation sur les types enum ni boucle foreach?
Double Possible de une itération sur Enum constantes dans les JSP
OriginalL'auteur jayjaypg22 | 2010-10-20
Vous devez vous connecter pour publier un commentaire.
Une autre option est d'utiliser un
<c:set/>
balise comme tel:Puis il suffit de parcourir tant que tel:
Votre IDE devrait vous demander d'importer la
YourEnum
classe.OriginalL'auteur Steven Benitez
Les valeurs méthode fonctionne très bien, mon erreur.
En effet, le problème est que je n'ai pas mis ma liste à la page de la portée de ma jsp.
Pas besoin de la
getNames
méthodeOriginalL'auteur jayjaypg22
Un autre moyen simple peut être:
Vous avez besoin pour l'importation de ces:
OriginalL'auteur YROjha
Vous pouvez créer une méthode qui retourne
Enum.values()
si vous ne pouvez pas utiliser les valeurs directement dans votre expression EL.Supprimer la
getNames()
de l'intérieur de votre Enum et d'utiliser une méthode comme ceci à la place quelque part dans votre code.OriginalL'auteur Shervin Asgari
La EL vous utilisez dans les éléments de l'attribut sur c:forEach tente d'appeler une méthode statique sur vos types enum. Je crois que EL prend uniquement en charge les appels sur les méthodes d'instance.
OriginalL'auteur highlycaffeinated