2012-09-20 46 views
2

我認爲最初的問題很混亂。Spring MVC和請求屬性

我有一個HashMap,需要從我想通過Spring Controller發送到視圖的數據庫收集。我不想把這個HashMap放在model.addAttribute()中,因爲Spring Model對象返回一個Map,而我的JSP需要的集合是Collection<Object>。如果我將我的HashMap.values()設置爲request.setAttribute,如果我的方法返回一個String,該如何去調用該請求變量到視圖?

@RequestMapping(method = RequestMethod.GET) 
public String home(Locale locale, Model model, HttpServletRequest request) { 

    model.addAttribute("surveys", mySurveys); //this is a map and I need a Collection<Object> 

    //So I'd like to do this, but how do I get to the "evaluations" object in a view if I'm not dispatching it (like below)?? 
    request.setAttribute("evaluations", mySurveys); 

    //RequestDispatcher rd = request.getRequestDispatcher("pathToResource"); 
    //rd.forward(request, response); 

    return "home"; 
} 

編輯:春天標籤庫不能用於這個特殊的用例。

謝謝。

+0

您使用Spring MVC並且不能使用Spring Taglibs,它是** Spring MVC jar中的** - 爲什麼不呢? – Xaerxess

+0

我可以使用它,但我使用的TagLib適合我們正在使用的系統的界面。用戶期望它看起來有某種特定的方式。 – Robert

+0

因此,如果您使用addAttribute將其添加到模型中,那麼您是不是可以使用home.jsp中的$ {surveys}簡單地訪問它? – digitaljoel

回答

4

如果mySurveys是一個地圖,那麼也許你可以把mySurveys.values()到ModelMap代替mySurveys(也,你打算使用一個ModelMap,而不是一個型號的?)

在下面的代碼,調查將是對象的集合,將是通過$ jsp中訪問{}調查

@RequestMapping(method = RequestMethod.GET) 
public String home(ModelMap modelMap, HttpServletRequest request) { 

    Map<String,Object> mySurveys = getMySurveys(); 
    modelMap.addAttribute("surveys", mySurveys.values()); 
    return "home"; 
} 
+0

謝謝@Matt。我在發佈前一個小時就意識到了這一點,是的,我需要Model而不是ModelMap。接得好。 – Robert

1

我認爲你對ModelMap是什麼感到困惑。

您可以通過@ModelAttribute註釋想要訪問的任何變量,Spring將自動實例化它,並將其添加到ModelMap。在視圖中,你可以使用它像:

<form:form modelattribute="myAttribute"> 
    <form:input path="fieldInAttribute"> 
</form:form> 

希望這回答你的問題

+0

我不能使用Spring標籤,但我正在使用另一個擁有自己的api和taglib的框架。我將不得不使用$ {variable}語法來顯示它。 – Robert

+0

你可以發佈我們正在談論的代碼部分嗎? – th3an0maly

+0

我發佈了我正在嘗試做的事 – Robert