2011-11-22 19 views
10

Tengo una etiqueta JSP personalizada que usa un parámetro que es una enumeración. Este enfoque es una consecuencia del uso de otras clases que necesitan esta enumeración. El punto es que no tengo ni idea de cómo asignar un valor de enumeración en el EL:Pasar un valor enum como un atributo de etiqueta en JSP

<mytaglib:mytag enumParam="${now what do I type here?}" /> 

La única solución que he encontrado hasta ahora era hacer que el enumParam un entero y convertirlo a los valores deseados:

<mytaglib:mytag enumParam="3" /> 

Creo que debe haber una mejor manera de hacerlo. Por favor ayuda.

Respuesta

12

EL permite el uso de Enumerados!

Hay tres maneras de establecer un valor de atributo de etiqueta, ya sea utilizando un valor de lado derecho o expresión lvalue:
[..]

Con sólo texto:

< alguna: = valor de la variable "SomeText "/ >

Esta expresión se denomina expresión literal. En este caso, el valor de String del atributo se coacciona con el tipo esperado del atributo. Las expresiones de valores literales tienen reglas de sintaxis especiales. Ver Expresiones literales para más información. Cuando un atributo de etiqueta tiene un tipo de enumeración, la expresión que utiliza el atributo debe ser una expresión literal. Por ejemplo, el atributo de etiqueta puede usar la expresión "corazones" para indicar Suit.hearts. El literal se coacciona con Suit y el atributo obtiene el valor Suit.hearts.

http://download.oracle.com/javaee/5/tutorial/doc/bnahq.html

Enum:

public Enum Color{ 
    RED, BLUE, GREEN 
} 

archivo JSP/Tag

<mytaglib:mytag enumParam="${'RED'}" /> 

probado con Tomcat 7.0.22, así como embarcadero 6.1.26.

+0

También probado para trabajar en Tomcat 6.0. – Bass

-1

EL no admite el acceso a Enums. Debes considerar usar cadenas.

Ejemplo:

public Enum Color{ 
    READ, BLUE, GREEN 
} 

Puede pasar cadena a su etiqueta de costumbre, como a continuación:

<mytaglib:mytag enumParam="RED" /> 
OR 
<mytaglib:mytag enumParam="${obj.color}" /> 

En su etiqueta personalizada se obtiene el valor de enumeración como esto:

Color.valueOf("RED"); 
+2

En el comentario de devpg se muestra que las enumeraciones son compatibles. Y también puedo confirmar que su solución funciona. –

+0

De acuerdo con Peter. Esto no es correcto. En su ejemplo, 'enumParam =" $ {'BLUE'} "' funcionaría bien. – dgrundel

Cuestiones relacionadas