Hier sind zwei weitere Möglichkeiten:
JSP EL 3.0-Konstanten
Solange Sie mindestens Version 3.0 von EL verwenden, können Sie Konstanten wie folgt in Ihre Seite importieren:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Einige IDEs verstehen dies jedoch noch nicht (z. B. IntelliJ ), sodass Sie bis zur Laufzeit keine Warnungen erhalten, wenn Sie einen Tippfehler machen.
Dies wäre meine bevorzugte Methode, sobald sie die richtige IDE-Unterstützung erhält.
Hilfsmethoden
Sie können Ihrer Aufzählung einfach Getter hinzufügen.
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;
}
}
Dann in Ihrer JSP:
<c:when test="${dp.status.valid}">
Dies wird in allen IDEs unterstützt und funktioniert auch, wenn Sie EL 3.0 noch nicht verwenden können. Dies ist, was ich im Moment mache, weil es die gesamte Logik in meiner Aufzählung festhält.
Seien Sie auch vorsichtig, wenn es möglich ist, dass die Variable, in der die Aufzählung gespeichert ist, null ist. Sie müssten dies zuerst überprüfen, wenn Ihr Code nicht garantiert, dass er nicht null ist:
<c:when test="${not empty db.status and dp.status.valid}">
Ich denke, diese Methode ist denen überlegen, bei denen Sie einen Zwischenwert in der JSP festlegen, da Sie dies auf jeder Seite tun müssen, auf der Sie die Aufzählung verwenden müssen. Bei dieser Lösung müssen Sie den Getter jedoch nur einmal deklarieren.