Oto dwie dodatkowe możliwości:
Stałe JSP EL 3.0
Jeśli używasz co najmniej wersji 3.0 EL, możesz importować stałe do swojej strony w następujący sposób:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Jednak niektóre IDE jeszcze tego nie rozumieją (np. IntelliJ ), więc nie otrzymasz żadnych ostrzeżeń, jeśli popełnisz literówkę, aż do czasu uruchomienia.
To byłaby moja preferowana metoda, gdy uzyska odpowiednią obsługę IDE.
Metody pomocnicze
Możesz po prostu dodać metody pobierające do swojego wyliczenia.
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;
}
}
Następnie w Twoim JSP:
<c:when test="${dp.status.valid}">
Jest to obsługiwane we wszystkich IDE i będzie działać również, jeśli nie możesz jeszcze używać EL 3.0. To właśnie robię w tej chwili, ponieważ utrzymuje całą logikę zawiniętą w moim wyliczeniu.
Uważaj także, jeśli zmienna przechowująca wyliczenie może mieć wartość null. Najpierw musisz to sprawdzić, jeśli twój kod nie gwarantuje, że nie jest pusty:
<c:when test="${not empty db.status and dp.status.valid}">
Myślę, że ta metoda jest lepsza od tych, w których ustawiasz wartość pośrednią na stronie JSP, ponieważ musisz to zrobić na każdej stronie, na której musisz użyć wyliczenia. Jednak w przypadku tego rozwiązania wystarczy tylko raz zadeklarować getter.