一尘不染

Struts 2迭代枚举

jsp

在Struts 2中是否可以使用标签迭代枚举<s:iterator>?现在我正在使用String列表进行操作,但是可以直接使用枚举吗?

提前致谢。


阅读 186

收藏
2020-06-08

共1个答案

一尘不染

是。有点丑陋,答案是启用静态方法访问,对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中的标记之后添加以下内容。

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
2020-06-08