2011-06-15 48 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; 
}