2008-10-02 21 views
14

¿Hay alguna manera de utilizar los valores de Enum dentro de un JSP sin usar scriptlets?Enum dentro de un JSP

p. Ej.

package com.example; 

public enum Direction { 
    ASC, 
    DESC 
} 

por lo que en la JSP quiero hacer algo como esto

<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">... 

Respuesta

17

Se podría aplicar el texto en la web amigable para una dirección dentro de la enumeración como un campo:

 

<%@ page import="com.example.Direction" %> 
... 
<p>Direction is <%=foo.direction.getFriendlyName()%></p> 
<% if (foo.direction == Direction.ASC) { %> 
<p>That means you're going to heaven!</p> 
<% } %> 
 

pero eso mezcla la vista y el modelo, aunque para usos simples puede ser independiente de la vista ("Ascendente", "Descendente", etc.).

A menos que no le guste poner Java directamente en sus páginas JSP, incluso cuando se usa para cosas básicas como comparaciones.

1

lo puede ver simplemente con el valor de enumeración como una cadena:

<c:if test="${foo.direction == 'ASC'}">... 
+3

Usar una cadena codificada es una mala idea – sjain

+0

Evite cadenas codificadas. ¿Qué pasa si tu enumeración es cambiada? – user2447161

+0

Quizás esta no sea la mejor solución. Pero aún es mejor que el código Java voluminoso en la página JSP. – saidfagan

-1

Se puede hacer como esto supongo

<c:set var="ASC" value="<%=Direction.ASC%>"/> 
<c:if test="${foo.direction == ASC}"></c:if> 

la ventaja es cuando refactorearlo retitulará aquí también

+0

¿Por qué lo desviaste? Por favor comenta el motivo. –

+0

Si es porque la expresión JSP mira la respuesta aceptada, también la está usando –

Cuestiones relacionadas