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

在JSP中将枚举值作为标记属性传递,jsp,enums,taglib,Jsp,Enums,Taglib,我有一个自定义JSP标记,它使用的参数是枚举。此方法是使用其他需要此枚举的类的结果。关键是我不知道如何在EL中分配枚举值: <mytaglib:mytag enumParam="${now what do I type here?}" /> 到目前为止,我找到的唯一解决方法是将enumParam设置为整数,并将其转换为所需的值: <mytaglib:mytag enumParam="3" /> 我相信一定有更好的办法。请提供帮助。EL不支持访问枚举。你应该考虑

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

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

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

<mytaglib:mytag enumParam="3" />


我相信一定有更好的办法。请提供帮助。

EL不支持访问枚举。你应该考虑使用字符串。 示例:

public Enum Color{ 
   READ, BLUE, GREEN 
}
您可以将字符串传递给自定义标记,如下所示:

<mytaglib:mytag enumParam="RED" />
OR
<mytaglib:mytag enumParam="${obj.color}" />

EL允许使用枚举

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

仅限文本:

此表达式称为文字表达式。在这种情况下,属性的字符串值被强制为属性的预期类型。文字值表达式有特殊的语法规则。有关详细信息,请参见文字表达式。当标记属性具有枚举类型时,该属性使用的表达式必须是文本表达式。例如,标记属性可以使用表达式“hearts”表示Suit.hearts。文本被强制为Suit,属性得到值Suit.hearts

枚举:

public Enum Color{ 
   RED, BLUE, GREEN 
}
JSP/Tag文件

<mytaglib:mytag enumParam="${'RED'}" />


使用Tomcat 7.0.22和Jetty 6.1.26进行测试。

在devpg的评论中,它表明支持枚举。我也可以证实他的解决方案是有效的。同意彼得的观点。这是不对的。在您的示例中,
enumParam=“${'BLUE'}”
可以正常工作。
<mytaglib:mytag enumParam="${'RED'}" />