Ecco altre due possibilità:
Costanti JSP EL 3.0
Finché utilizzi almeno la versione 3.0 di EL, puoi importare le costanti nella tua pagina come segue:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Tuttavia, alcuni IDE non lo capiscono ancora (ad esempio IntelliJ ) quindi non riceverai alcun avviso se fai un errore di battitura, fino al runtime.
Questo sarebbe il mio metodo preferito una volta ottenuto il supporto IDE appropriato.
Metodi di aiuto
Potresti semplicemente aggiungere getter al tuo enum.
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;
}
}
Quindi nel tuo JSP:
<c:when test="${dp.status.valid}">
Questo è supportato in tutti gli IDE e funzionerà anche se non puoi ancora usare EL 3.0. Questo è quello che faccio al momento perché mantiene tutta la logica racchiusa nel mio enum.
Fai anche attenzione se è possibile che la variabile che memorizza l'enum sia nulla. Dovresti prima verificarlo se il tuo codice non garantisce che non sia nullo:
<c:when test="${not empty db.status and dp.status.valid}">
Penso che questo metodo sia superiore a quelli in cui imposti un valore intermedio nel JSP perché devi farlo in ogni pagina in cui devi usare l'enumerazione. Tuttavia, con questa soluzione è necessario dichiarare il getter una sola volta.