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