Aquí hay dos posibilidades más:
JSP EL 3.0 Constantes
Mientras usted está utilizando al menos la versión 3.0 de EL, entonces se puede importe las constantes en su página de la siguiente manera:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Sin embargo, algunos IDEs aún no lo entienden (p. 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 reciba la compatibilidad adecuada con IDE.
Métodos útiles para
Se podía añadir 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 su JSP:
<c:when test="${dp.status.valid}">
Esto es compatible con todos los entornos de desarrollo y también funcionará si no se puede utilizar EL 3.0 todavía. 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. Usted tendría que comprobar que en primer lugar si el código no garantiza que no es nulo:
<c:when test="${not empty db.status and dp.status.valid}">
Creo que este método es superior a aquellos en los que se establece un valor de intermediaria en la JSP, ya que tiene que hacer eso en cada página donde necesitas usar la enumeración. Sin embargo, con esta solución solo necesita declarar el getter una vez.
Para aquellos que requieren una fuente: Esto se especifica (por ejemplo) en la sección 1.17 de la "Especificación del lenguaje de expresión, versión 2.2", que es parte de [JSR-245] (http://www.jcp.org/en/ jsr/detail? id = 245). – meriton
La especificación JavaServer Pages ™, versión 2.0 dice en JSP.2.3.5.7: "• Si A o B es Coerción de cadena tanto A como B a cadena, compare léxicamente" –
Pero pierde la ventaja de tener una enumeración: esto podría conducir a engorrosos malentendidos si la enumeración cambia un día. Por lo general, si me encuentro cambiando una enumeración, me siento bastante seguro, y probablemente no recordaría esa referencia de cadena a referencia en esa vista ... – reallynice