Ответ 1
Да. Это немного уродливо, ответ - это доступ к статическому методу, использование внутреннего синтаксиса класса для выражения OGNL (использует "$" ), и вместе они позволят вам получить метод значений, как уже упоминалось Стивеном. Вот пример:
Пример действия:
package com.action.test;
import com.opensymphony.xwork2.ActionSupport;
public class EnumTest extends ActionSupport{
enum Numbers{ONE, TWO, THREE};
}
Пример JSP:
<%@taglib prefix="s" uri="/struts-tags"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<h1>Enum Test</h1>
//NOTE THE USE OF THE $ character to access the inner class on the following two lines.
length: <s:property value="@[email protected]().length"/><br/>
<s:iterator value="@[email protected]()">
<s:property/><br/>
</s:iterator>
</body>
</html>
Выход
Тест Enum
длина: 3
ONE
ДВА
ТРИ
Примечание. Убедитесь, что включен доступ к статическому методу. Простой способ сделать это - добавить следующее после тега
<struts>
в struts.xml.
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>