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