Spring MVC 內 ModelAndView 用法


在目前 Spring MVC 專案內已經有利用 mvc-servlet.xml 設定一個全域的 bean 來處理 view 的轉送:

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

因此在 controller 裡面只要寫 return ABC 就等於 return /WEB-INF/view/ABC.jsp

不過這樣處理 controller 之間的轉送會有問題,比如想轉 CDE.do,會被轉送到 /WEB-INF/CDE.do.jsp 而造成失敗

爬文之後,在 controller 內用 ModelAndView 會是比較好的處理方式。
1. 我們可以透過 return new ModelAndView("redirect:/userOrder.controller");
直接去到已經 mapping 給 /userOrder.controller 路徑的 controller
2. 可以 new ModelAndView 物件並使用 .setViewName 方法,例如 .setViewName("ABC")
這樣一樣能吃到 mvc-servlet.xml 內設定的前後綴,最終去 /WEB-INF/view/ABC.jsp

詳細文章記載在這篇的方法二

Spring MVC之ModelAndView分析 h5

以及這篇的第一段

1. return modelAndView例子 h5