2011-06-15 101 views
4

我在Spring 3中有一个简单的测试项目,基本上是一个控制器内的一个方法,它从一个数组列表中提取数据并“应该”将它们传递给一个视图 这就是方法看起来像:如何将对象传递给视图Spring MVC3

@RequestMapping(value="/showUsers") 
public String showUsers(Model model){ 
    ArrayList<User> users=this.copy(); 
    model.addAttribute(users); 
    return "showUsers"; 
} 

而这里的JSP(showUsers.jsp)

他们都没有记录或警告显示视图执行但没有ArrayList<User>数据的:(

<table align="center" border="1"> 
    <tr> 
     <td>Nr:</td><td>Name:</td><td>Email</td><td>Modify?</td> 
    </tr> 
    <c:forEach var="user" items="${users}" varStatus="status"> 
     <tr> 
      <td><c:out value="${status.count}"/></td><td><c:out value="${user.name}"/></td> 
      <td><c:out value="${user.email}"/></td><td>Modify</td> 
     </tr> 
    </c:forEach> 
</table> 

有什么建议吗? 谢谢!

回答

5

Model documentation列出2种方法添加属性到型号。您使用的版本不提供名称,所以Spring将使用generated name。我认为这个名字并不是你想象的那样。

你可以使用model.addAttribute("users", users);

+0

是添加模式,或注释,而不是;-) – andyb 2011-06-15 19:58:31

+0

你的意思是通过调用@ModelAttribute春天实际使用模式的addAttribute在型号的addAttribute代替(对象的AttributeValue)(字符串的attributeName,对象的AttributeValue )? – JBoy 2011-06-15 21:19:39

+0

是的,你可以使用'@ ModelAttribute'(值是可选的 - 参见[documentation](http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/web/bind/ annotation/ModelAttribute.html)),但是Spring也会创建它自己的名称模型属性名称。但是,您**正在提供“用户”的价值,这正是使其发挥作用的原因。 – andyb 2011-06-15 21:25:00

3

谢谢大家,我解决了这个问题是这样的:

@RequestMapping(value="/showUsers") 
@ModelAttribute("users") 
public ArrayList<User> showUsers(){ 

    return userList; 
} 
相关问题