我有一个这样的枚举:
package languages;
public enum Language
{
ENG, GER, FRA;
public static final Language DEFAULT = ENG;
}
我想通过调用DEFAULT
方法,使用JSP
在OGNL
中获取name()
静态变量的名称。
我尝试了这些,但没有一个有效:
<s:property value="%{@languages.Language@DEFAULT.name()}" />
<s:property value="@languages.Language@DEFAULT.name()" />
<s:property value="@languages.Language@DEFAULT@name()" />
但这有效:
<s:property value="@languages.Language@ENG.name()" />
答案 0 :(得分:1)
你做不到。至少没有一些解决方法。
在访问枚举中的静态字段时 - OGNL将调用valueOf
类的静态java.lang.Enum
方法。
用你的表达式会是这样的:
Enum.valueOf(Language.class, "DEFAULT");
由于指定的枚举类型没有指定名称的常量,导致java.lang.IllegalArgumentException
被抛出。
答案 1 :(得分:1)
按照此处所述修复ognl库相对容易:https://issues.apache.org/jira/browse/WW-4479
希望它能够成为未来的struts2版本。