Struts2:如何在JSP中访问会话变量?

3 struts2

我在Action类的Session对象中设置了一个ArrayList,如图所示

public class HelloWorld implements SessionAware

{

    private Map session;

    public HelloWorld() {
    }

    public String execute() {

        List list = new ArrayList();

        list.add("One");
        list.add("One2");
        list.add("One3");
        list.add("One4");
        list.add("One5");
        list.add("One6");
        list.add("One7");

        session.put("MyList", list);

        System.out.println("Hi inside ");

        return "SUCCESS";
    }

    public void setSession(Map session) {

        this.session = (Map) session;

    }

    public Map getSession() {

        return (Map) session;

    }

}
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在JSP页面中访问此Session对象"MyList"我已经尝试过这种方式

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>

    <%
        Map session = ContextAction.getContext().getSession();
    %>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我不知道使用ContextAction是否更好?请告诉我如何在JSP中访问此会话"MyList"

Ste*_*tez 9

我认为你的意思是ActionContext,而不是ContextAction.无论哪种方式,这都不是这样做的方式.以下示例显示如何使用OGNL(标准Struts2方式)和JSTL(标准JSP方式)迭代列表.您可以使用任何一种方法.

使用OGNL

<s:iterator value="%{#session.MyList}">
  <s:property/>
</s:iterator>
Run Code Online (Sandbox Code Playgroud)

使用JSTL

<c:forEach items="${sessionScope.MyList}" var="item">
  <c:out value="${item}"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

以下是有关该<s:iterator/>标记的更多信息:http://struts.apache.org/2.2.3/docs/iterator.html