2012-03-23 31 views
0

首先,一些背景:Spring3 MultiActionController方法 - 處理程序解析。 MapAndView VS字符串

web.xml中:

我全部匹配/應用/ *請求我的調度員:

<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> 

我的問題,爲什麼在返回時調用/ 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?

+0

你使用Spring 3還是Spring 2? – Ralph 2012-03-23 08:05:09

+0

這將是春季3. – jonasespelita 2012-03-23 08:18:55

回答

2

您使用的是MultiActionController,它對方法命名約定和簽名具有非常嚴格的約束。

但是,您根本不應該使用MultiActionController,它已經過時並且已被棄用。按照Spring手冊中的描述寫入控制器,即使用@Controller@RequestMapping,那麼您將獲得更靈活的方法簽名。

+1

註釋是那麼。謝謝。 – jonasespelita 2012-03-23 12:36:19

2

如果你使用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; 
    }