2

我无法迭代存储在 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>

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

4

1 回答 1

3

var 属性可能是不需要的,因为迭代器将该项目推到堆栈的顶部......

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

请注意,如果您想用 {} 包装表达式,它们应该以 %{} 为前缀以表示 OGNL,其中 ${} 表示 EL。如果默认情况下不评估表达式,您只需要使用 %{} 将表达式包装在 struts2 标记中,因为在某些情况下评估通常是有意义的,而在其他情况下,您不需要经常这样做,因为标签属性评估/或不像大多数人所期望的那样。

于 2012-04-18T23:43:28.627 回答