2016-12-18 12 views
1

Spring MVCでは、リクエストが処理されるときに、DispatcherServletは、どのコントローラがリクエストを処理するべきかを指定するHandlerMappingを指定します。 Controllerは要求を処理し、指定されたViewのモデルを返します。ModelAndViewからのビューとViewResolverからのビュー

そして、私はその後、ViewResolverが仕事を始めたときに何が起こるのか分かりません。 Viewが既にControllerで指定されている場合、ViewResolver層が存在するのはなぜですか?それは実際に何をしていますか?前にViewを指定していないか、またはControllerを指定してください。または、ControllerViewResolver層をトリガーする必要がありますか?

答えて

4

ViewResolverマップは、たとえば、あなたが持っている実際のviews.whenに名前を表示します。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/views/"/> 
     <property name="suffix" value=".jsp"/> 
</bean> 

あなたは、文字列を返すとき、コントローラメソッドで春を告げる戻り値に接頭辞と接尾辞を追加して、負荷ことビューには、あなたが

@RequestMapping("/") 
public String home() { 
    return "home"; 
} 

ViewResolverは/WEB-INF/views/home.jsp

をロードするために/家に持ち帰ると home.jspに変更し、WEB-INF /ビュー/を見ていきますを持って言うことができます0
+0

ViewResolverレイヤーは、指定されたビューではなく、Stringとしてビュー名を返すときにだけトリガされますか? – nowszy94

+1

実際、コントローラでは、各ビューは、春がそれを解決できるように変換する必要があります。このビューは、pdf、JSON、html、jsp、xmlなどです。文字列は、ViewResolverを利用せずにこれらのビューを解決する方法をSpringに知らせることはできません –

関連する問題