jsp页面上的Struts2迭代

jsp页面上的Struts2迭代,jsp,struts2,Jsp,Struts2,我试图在我的jsp struts2页面中引入一些逻辑。如果会话变量返回的列表为null,那么我想对其进行迭代。如果它是非空的,那么我想使用exising列表。下面是我的代码,但编译器抱怨它们的两个迭代器是标记,而只是一个结束标记 <% java.util.List eventL = (java.util.List)session.getAttribute("eventList"); if(eventL != null){

我试图在我的jsp struts2页面中引入一些逻辑。如果会话变量返回的列表为null,那么我想对其进行迭代。如果它是非空的,那么我想使用exising列表。下面是我的代码,但编译器抱怨它们的两个迭代器是标记,而只是一个结束标记

 <%
            java.util.List eventL = (java.util.List)session.getAttribute("eventList");
            if(eventL != null){
                System.out.println("SIZE LIST IS "+eventL.size());
                %>
                <s:iterator value="eventL" var="event">
                <%
            }
            else 
            {
            %>
            <s:iterator value="eventList" var="event">

            <% } %>

我是否正确地迭代了会话变量返回的列表


谢谢

我刚刚添加了一个新的struts操作,并在该操作中添加了请求的会话变量。操作重定向到完全相同的页面,但使用了会话变量。


<s:iterate  var="even" value="eventList">
    <s:property value="ListProperty1/>
    <s:property value="ListProperty2/>
    <s:property value="ListProperty3/>
</s:iterate>

我不知道如何在struts2中实现这一点,但我至少可以告诉您,Scriptlet和taglibs并不像您从编码中所期望的那样共享相同的变量范围。有一些变通方法(实际上是黑客),但通常的做法是使用其中一种方法,而不是同时使用两种方法。由于自JSP 2.0(十年前)以来就不鼓励使用Scriptlet,所以最好只使用TagLib。换句话说,去掉JSP中所有的
东西。另见