如何迭代struts2中的对象集合?

时间:2012-04-18 19:10:13

标签: java struts2 iterator

我无法迭代存储在struts2中的用户对象中的集合。

我的struts操作,表单和用户bean是:

public class Project {
    private String name;
    private int id;

    // getter and setter for name & id
}

public class User {
    private String name;
    private List<Project> projects;
    :
    :
    public List<Project> getProjects() {
      // fetch projects from database and add to projects

      return projects;
    }
}

pulbic class login extends ActionSupport {
    private User user;
    public String execute() {
       user = new User();
       return SUCCESS;
    }

    public User getUser () {
      return user;
    }
}

现在,在jsp页面上,我需要显示用户的所有项目

JSP代码:

   <s:iterator value="user.projects" var="proj" status="key">           
        <td> <s:property value="${proj.name}" /> </td>  
        <td> <s:property value="${proj.id}" /> </td>  
    </s:iterator>

但是这个迭代器不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:1)

当迭代器将该项目推送到堆栈顶部时,可能不需要var属性...

<s:iterator value="user.projects">           
    <td> <s:property value="name" /> </td> 
    <td> <s:property value="id" /> </td>  
</s:iterator>

注意如果你想用{}包装表达式,它们应该以%{}为前缀来表示OGNL,其中$ {}表示EL。如果默认情况下不对它们进行评估,您只需要将表达式包含在带有%{}的struts2标记中,因为在某些上下文中评估通常是有意义的,而在标记属性评估时通常不需要执行此操作。 /或不像大多数人所期望的那样。