JSPのModelAndViewからモデルを取得する
-
19-09-2019 - |
質問
現在、コントローラーの 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}"/>
ただし、これでは何も表示されません。正しいリダイレクトビューに移動し、エラーは発生しませんが、テキストは表示されません。
ご協力をよろしくお願いいたします。
ありがとう
解決
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");
所属していません StackOverflow