在JSP中将枚举值作为标记属性传递

jak*_*zon 10 enums jsp taglib

我有一个自定义JSP标记,它使用的参数是枚举.这种方法是使用需要此枚举的其他类的结果.关键是我不知道如何在EL中分配枚举值:

<mytaglib:mytag enumParam="${now what do I type here?}" />
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的唯一解决方法是使enumParam成为一个整数并将其转换为所需的值:

<mytaglib:mytag enumParam="3" />
Run Code Online (Sandbox Code Playgroud)

我相信必须有更好的方法来做到这一点.请帮忙.

dev*_*vpg 12

EL允许使用Enums!

使用rvalue或lvalue表达式设置标记属性值有三种方法:
[..]

仅限文字:

<some:tag value ="sometext"/>

此表达式称为文字表达式.在这种情况下,属性的String值被强制转换为属性的预期类型.文字值表达式具有特殊的语法规则.有关更多信息,请参阅文字表达式.当标记属性具有枚举类型时,属性使用的表达式必须是文字表达式.例如,tag属性可以使用表达式"hearts"来表示Suit.hearts.文字被强制为Suit,属性获得值Suit.hearts.

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

枚举:

public Enum Color{ 
   RED, BLUE, GREEN 
}
Run Code Online (Sandbox Code Playgroud)

JSP/Tag文件

<mytaglib:mytag enumParam="${'RED'}" />
Run Code Online (Sandbox Code Playgroud)

使用Tomcat 7.0.22以及Jetty 6.1.26进行测试.