一尘不染

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

jsp

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

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

到目前为止,我发现的唯一解决方法是将enumParam设置为Integer并将其转换为所需的值:

<mytaglib:mytag enumParam="3" />

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


阅读 338

收藏
2020-06-08

共1个答案

一尘不染

EL允许使用枚举!

有三种使用右值或左值表达式设置标签属性值的方法:
[..]

仅含文字:

该表达式称为文字表达式。在这种情况下,属性的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的测试。

2020-06-08