在Struts 2中是否可以使用标签迭代枚举<s:iterator>?现在我正在使用String列表进行操作,但是可以直接使用枚举吗?
<s:iterator>
提前致谢。
是。有点丑陋,答案是启用静态方法访问,对OGNL表达式使用内部类语法(使用’$’),两者结合在一起将使您可以使用Steven提到的values方法。这是一个例子:
动作示例 :
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="@com.action.test.EnumTest$Numbers@values().length"/><br/> <s:iterator value="@com.action.test.EnumTest$Numbers@values()"> <s:property/><br/> </s:iterator> </body> </html>
输出 :
长度:3
ONE
TWO
THREE
注意 :确保已启用静态方法访问。一种简单的方法是<struts>在struts.xml中的标记之后添加以下内容。
<struts>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>