0

現在、コントローラーの onSubmit() からモデルを返そうとしています。次に、jsp でこれを取得しようとしています。

例えば

Map model = new HashMap();
model.put("errors", "example error");
return new ModelAndView(new RedirectView("login.htm"), "model", model);

そして、それを取得します

<c:out value="${model.errors}"/>

ただし、これは何も表示されません。正しいリダイレクトビューに移動し、エラーは発生しませんが、テキストは表示されません。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

2

RedirectViewが行うことは、リダイレクトヘッダーをブラウザーに送信することです。これにより、ブラウザーはページの完全なリロードを実行します。その結果、モデルはそこに持ち越されません(現在は独自のモデルのログインコントローラーによって処理されるため)。

できることは、リクエスト属性を介してエラーを渡すことです。

あなたのviews.propertiesで:

loginController.(class)=org.springframework.web.servlet.view.InternalResourceView
loginController.url=/login.htm

次に、RedirectViewの代わりに次を返します。

request.setAttribute("errors", "example errors");
return new ModelAndView("loginController");

そして、ログインコントローラでこの属性を確認し、モデルに追加します。

更新: views.propertiesを使用せずに:

request.setAttribute("errors", "example errors");
return new ModelAndView(new InternalResourceView("/login.htm"));

または、(別の)内部ビューリゾルバーをApp-servlet.xmlに追加できます(APIからの注:ViewResolverをチェーンする場合、InternalResourceViewResolverは、基になるリソースに関係なく、任意のビュー名を解決しようとするため、常に最後である必要があります実際に存在します。):

<bean id="viewResolver2"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>

そして、次を使用します。

request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");
于 2009-07-26T18:53:23.180 に答える