2016-04-01 102 views
0

這兩種@RequestMapping有什麼區別? (一般來說,不包括傳遞給頁面和映射頁面的參數), 正確的方法是返回模型或頁面?彈簧mvc控制器映射方式不同

@RequestMapping("/") 
    public String index(Model model) { 
     model.addAttribute("categories", myService.listGroups()); 
     return "index"; 
    } 

@RequestMapping(value = {"/", "/helloworld**"}, method = {RequestMethod.GET}) 
    public ModelAndView welcomePage() { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("title", "Spring Security Tutorial"); 
     model.addObject("message", "Welcome Page !"); 
     model.setViewName("helloworld"); 
     return model; 
    } 
+0

此外網址,第一個適用於POST,PUT等,第二個是隻得到 –

回答

1

區別主要是句法。還要注意,通常聲明ModelAndView作爲方法參數而不是實例化它。

Model作爲參數+ String視圖返回值的優點:

  • 更容易設置模型屬性(迪米特少違法違規行爲,如果你關心)
  • 容易返回視圖值(簡單地返回一個字符串)

ModelAndView作爲返回值& PARAM優點:

  • 封裝了這兩個在一個單一的對象,它可以讓你更好地撰寫你的方法在某些情況下(可能鏈處理方法?)
  • 允許返回非字符串來看,像RedirectView(其中,例如,相比,字符串視圖,允許用戶設置的確切3 **而不接觸或甚至在聲明HTTP servlet響應參數的HTTP響應狀態:Set HTTP status code for redirect when returning a String in a Spring 3 controller

參見:

+0

感謝您的幫助 – user202822