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

时间:2011-11-22 08:01:23

标签: jsp enums taglib

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

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

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

<mytaglib:mytag enumParam="3" />

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

2 个答案:

答案 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");