2

元の質問は紛らわしかったと思います。

SpringControllerを介してビューに送信したいデータベースからのコレクションである必要があるHashMapがあります。Spring ModelオブジェクトがMapを返し、JSPでコレクションが。である必要があるため、このHashMapをmodel.addAttribute()に配置したくありませんCollection<Object>。HashMap.values()をrequest.setAttributeに設定した場合、メソッドが文字列を返している場合、そのリクエスト変数をビューにディスパッチするにはどうすればよいですか?

@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がマップの場合、おそらくmySurveys.values()をmySurveysの代わりにModelMapに入れることができます(また、 Modelの代わりにModelMapを使用するつもりですか?)

以下のコードでは、調査はオブジェクトのコレクションであり、jspで${surveys}を介してアクセスできます。

@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 に答える