10
votes

JSTL Foreach sur Enum

J'ai une liste de conants déclarée dans Java à l'aide de type ENum, qui doit apparaître dans un JSP. Java Enum Déclaration: XXX PRE>

Où: P>

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


1 commentaires

5 Réponses :


0
votes

L'EL que vous utilisez dans l'attribut Éléments sur C: Veach tente d'appeler une méthode statique sur vos types d'énumjet. Je crois que El ne prend en charge que des appels sur des méthodes d'instance.


0 commentaires

1
votes

Vous pouvez créer une méthode qui renvoie Enum.values ​​() code> si vous ne pouvez pas utiliser les valeurs directement dans votre expression EL.

Supprimer le getNames () code> de l'intérieur de votre enum et utilisez une méthode comme celle-ci aussi ailleurs dans votre code. P>

public List<LIST_TYPE_AFFICHAGE> getNames() {
    return new ArrayList<LIST_TYPE_AFFICHAGE>(Arrays.asList(LIST_TYPE_AFFICHAGE.values()));
}


0 commentaires

4
votes

La méthode des valeurs fonctionne bien, mon erreur. En effet, le problème était que je n'ai pas mis ma liste dans la pompe de mon JSP.

<%    pageContext.setAttribute("monEnum", ConstanteADMD.ListTypeAffichage.values()); %>

...
<c:forEach var="entry" items="${monEnum}">
    <option>${entry.type}</option>
</c:forEach>


0 commentaires

17
votes

Une autre option consiste à utiliser un CODE> TAG comme telle:

<c:forEach items="${enumValues}" var="enumValue">
    ...
</c:forEach>


1 commentaires

Je n'avais pas besoin de faire le

4
votes

Un autre moyen simple peut être: xxx

Vous devez importer ceci: xxx


0 commentaires