Вот еще две возможности:
Константы JSP EL 3.0
Если вы используете EL версии не ниже 3.0, вы можете импортировать константы на свою страницу следующим образом:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Однако некоторые IDE этого еще не понимают (например, IntelliJ ), поэтому вы не получите никаких предупреждений, если сделаете опечатку, до времени выполнения.
Это был бы мой предпочтительный метод, когда он получит надлежащую поддержку IDE.
Вспомогательные методы
Вы можете просто добавить геттеры в свое перечисление.
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;
}
}
Затем в вашем JSP:
<c:when test="${dp.status.valid}">
Это поддерживается во всех IDE и также будет работать, если вы еще не можете использовать EL 3.0. Это то, что я делаю сейчас, потому что это сохраняет всю логику в моем enum.
Также будьте осторожны, если переменная, хранящая перечисление, может иметь значение null. Вам нужно сначала проверить это, если ваш код не гарантирует, что он не равен нулю:
<c:when test="${not empty db.status and dp.status.valid}">
Я думаю, что этот метод превосходит те, в которых вы устанавливаете промежуточное значение в JSP, потому что вам нужно делать это на каждой странице, где вам нужно использовать перечисление. Однако с этим решением вам нужно только один раз объявить получатель.