Aquí hay dos posibilidades más:
Constantes JSP EL 3.0
Siempre que esté utilizando al menos la versión 3.0 de EL, puede importar constantes a su página de la siguiente manera:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Sin embargo, algunos IDE aún no comprenden esto (por ejemplo, IntelliJ ), por lo que no recibirá ninguna advertencia si comete un error tipográfico, hasta el tiempo de ejecución.
Este sería mi método preferido una vez que obtenga el soporte IDE adecuado.
Métodos auxiliares
Simplemente podría agregar captadores a su enumeración.
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;
}
}
Luego, en tu JSP:
<c:when test="${dp.status.valid}">
Esto es compatible con todos los IDE y también funcionará si aún no puede usar EL 3.0. Esto es lo que hago en este momento porque mantiene toda la lógica envuelta en mi enumeración.
También tenga cuidado si es posible que la variable que almacena la enumeración sea nula. Debería verificar eso primero si su código no garantiza que no sea nulo:
<c:when test="${not empty db.status and dp.status.valid}">
Creo que este método es superior a aquellos en los que estableces un valor intermedio en la JSP porque tienes que hacerlo en cada página donde necesitas usar la enumeración. Sin embargo, con esta solución, solo necesita declarar el getter una vez.