[英]Spring3 MultiActionController method - handler resolve. MapAndView vs String
首先,一些上下文:
web.xml中:
我將所有/ app / *請求與調度程序匹配:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
我的問題,為什么返回String時調用/ app / import / view可以工作:
控制器:
public class ImportController extends MultiActionController {
public String view(HttpServletRequest request, HttpServletResponse response) throws Exception
return "importer.home";
}
但是在返回ModelAndView時不是:
public class ImportController extends MultiActionController {
public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("importer.home");
mav.addObject(new ExlFile());
return mav;
}
如果使用ModelAndView,是否有其他命名約定?
您正在使用MultiActionController
,它對方法命名約定和簽名有非常嚴格的限制。
但是,您根本不應該使用MultiActionController
,因為它已過時且已過時。 按照Spring手冊中的描述編寫控制器,即使用@Controller
和@RequestMapping
,那么您將獲得更加靈活的方法簽名。
如果您使用的是Spring 3.0,那么我將更喜歡使用注釋。
@Controller
@RequestMapping(value = "/app")
public class ImportController {
@RequestMapping(value="/importer/home")
public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("importer.home");
mav.addObject(new ExlFile());
return mav;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.