Aqui estão mais duas possibilidades:
Constantes JSP EL 3.0
Contanto que você esteja usando pelo menos a versão 3.0 do EL, você pode importar constantes para sua página da seguinte maneira:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
No entanto, alguns IDEs ainda não entendem isso (por exemplo, IntelliJ ), então você não receberá nenhum aviso se cometer um erro de digitação, até o tempo de execução.
Este seria o meu método preferido, uma vez que obtivesse o suporte IDE adequado.
Métodos auxiliares
Você pode simplesmente adicionar getters ao seu enum.
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;
}
}
Então, em seu JSP:
<c:when test="${dp.status.valid}">
Isso é compatível com todos os IDEs e também funcionará se você ainda não puder usar o EL 3.0. Isso é o que eu faço no momento porque mantém toda a lógica embrulhada em meu enum.
Também tome cuidado se for possível que a variável que armazena o enum seja nula. Você precisaria verificar isso primeiro se o seu código não garantir que não seja nulo:
<c:when test="${not empty db.status and dp.status.valid}">
Acho que esse método é superior àqueles em que você define um valor intermediário no JSP porque você tem que fazer isso em cada página em que precisa usar o enum. No entanto, com esta solução, você só precisa declarar o getter uma vez.