我有一个自定义JSP标记,它使用的参数是枚举。这种方法是使用需要此枚举的其他类的结果。关键是我不知道如何在EL中分配枚举值:
<mytaglib:mytag enumParam="${now what do I type here?}" />
到目前为止,我发现的唯一解决方法是使enumParam成为一个整数并将其转换为所需的值:
<mytaglib:mytag enumParam="3" />
我相信必须有更好的方法来做到这一点。请帮忙。
答案 0 :(得分:12)
EL允许使用Enums!
使用rvalue或lvalue表达式设置标记属性值有三种方法:
[..]仅限文字:
&lt; some:tag value =“sometext”/&gt;
此表达式称为文字表达式。在这种情况下,属性的String值被强制转换为属性的预期类型。文字值表达式具有特殊的语法规则。有关更多信息,请参阅文字表达式。当标记属性具有枚举类型时,属性使用的表达式必须是文字表达式。例如,tag属性可以使用表达式“hearts”来表示Suit.hearts。文字被强制为Suit,属性获得值Suit.hearts。
http://download.oracle.com/javaee/5/tutorial/doc/bnahq.html
枚举:
public Enum Color{
RED, BLUE, GREEN
}
JSP /标记文件
<mytaglib:mytag enumParam="${'RED'}" />
使用Tomcat 7.0.22以及Jetty 6.1.26进行测试。
答案 1 :(得分:-1)
EL不支持访问枚举。你应该考虑使用字符串。
示例:强>
public Enum Color{
READ, BLUE, GREEN
}
您可以将字符串传递到自定义标记,如下所示:
<mytaglib:mytag enumParam="RED" />
OR
<mytaglib:mytag enumParam="${obj.color}" />
在自定义标记中,您可以获得如下的枚举值:
Color.valueOf("RED");