我有一个自定义的JSP标记,它使用的参数是枚举。这种方法是使用其他需要此枚举的类的结果。关键是我不知道如何在EL中分配枚举值:
<mytaglib:mytag enumParam="${now what do I type here?}" />
到目前为止,我发现的唯一解决方法是将enumParam设置为Integer并将其转换为所需的值:
<mytaglib:mytag enumParam="3" />
我相信必须有更好的方法来做到这一点。请帮忙。
EL允许使用枚举!
有三种使用右值或左值表达式设置标签属性值的方法: [..] 仅含文字: 该表达式称为文字表达式。在这种情况下,属性的String值被强制为属性的预期类型。文字值表达式具有特殊的语法规则。有关更多信息,请参见文字表达式。当标签属性具有枚举类型时,该属性使用的表达式必须是文字表达式。例如,标签属性可以使用表达式“ hearts”来表示Suit.hearts。文字被强制为Suit,并且属性获得值Suit.hearts。
有三种使用右值或左值表达式设置标签属性值的方法: [..]
仅含文字:
该表达式称为文字表达式。在这种情况下,属性的String值被强制为属性的预期类型。文字值表达式具有特殊的语法规则。有关更多信息,请参见文字表达式。当标签属性具有枚举类型时,该属性使用的表达式必须是文字表达式。例如,标签属性可以使用表达式“ 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的测试。