Ось ще дві можливості:
Константи 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. Однак з цим рішенням вам потрібно оголосити геттера лише один раз.