2

我认为最初的问题令人困惑。

我有一个 HashMap 需要是来自数据库的集合,我想通过 Spring Controller 将其发送到视图。我不想把这个 HashMap 放在 model.addAttribute() 中,因为 Spring Model 对象返回一个 Map 并且我的 JSP 需要集合是一个Collection<Object>. 如果我在 request.setAttribute 中设置我的 HashMap.values(),如果我的方法返回一个字符串,我该如何将该请求变量分派到视图?

@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";
}

编辑:Spring Tag 库不能用于这个特定的用例。

谢谢。

4

2 回答 2

4

如果 mySurveys 是 Map,那么也许您可以将 mySurveys.values() 放入 ModelMap 而不是 mySurveys (另外,您是否打算使用ModelMap而不是 Model?)

在下面的代码中,调查将是对象的集合,并且可以通过 ${surveys} 在 jsp 中访问

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

    Map<String,Object> mySurveys = getMySurveys();
    modelMap.addAttribute("surveys", mySurveys.values());
    return "home";
}
于 2012-09-21T02:03:47.823 回答
1

我想你对是什么感到困惑ModelMap

您可以在视图中注释要访问的任何变量@ModelAttribute,Spring 将自动实例化它,并将其添加到ModelMap. 在视图中,您可以像这样使用它:

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

希望这能回答你的问题

于 2012-09-20T19:14:22.920 回答