Voici deux autres possibilités:
Constantes JSP EL 3.0
Tant que vous utilisez au moins la version 3.0 d'EL, vous pouvez importer des constantes dans votre page comme suit:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Cependant, certains IDE ne comprennent pas encore cela (par exemple IntelliJ ) donc vous n'obtiendrez aucun avertissement si vous faites une faute de frappe, jusqu'à l'exécution.
Ce serait ma méthode préférée une fois qu'il aura un support IDE approprié.
Méthodes d'assistance
Vous pouvez simplement ajouter des getters à votre énumération.
public enum Status {
VALID("valid"), OLD("old");
private final String val;
Status(String val) {
this.val = val;
}
public String getStatus() {
return val;
}
public boolean isValid() {
return this == VALID;
}
public boolean isOld() {
return this == OLD;
}
}
Puis dans votre JSP:
<c:when test="${dp.status.valid}">
Ceci est pris en charge dans tous les IDE et fonctionnera également si vous ne pouvez pas encore utiliser EL 3.0. C'est ce que je fais pour le moment car cela garde toute la logique dans mon énumération.
Faites également attention s'il est possible que la variable stockant l'énumération soit nulle. Vous devrez d'abord vérifier cela si votre code ne garantit pas qu'il n'est pas nul:
<c:when test="${not empty db.status and dp.status.valid}">
Je pense que cette méthode est supérieure à celles où vous définissez une valeur intermédiaire dans le JSP car vous devez le faire sur chaque page où vous devez utiliser l'énumération. Cependant, avec cette solution, vous ne devez déclarer le getter qu'une seule fois.