我无法迭代存储在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>
但是这个迭代器不起作用。我该怎么办?
答案 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标记中,因为在某些上下文中评估通常是有意义的,而在标记属性评估时通常不需要执行此操作。 /或不像大多数人所期望的那样。