2015-03-31 101 views
13

我在Spring MVC方面沒有太多經驗,我有以下幾點關於什麼是控制器方法可返回的valids返回類型什麼是Spring MVC控制器方法的有效返回類型?

所以我知道用戶產生的HttpRequest接收和DispatcherServlet的可分派此請求到一個特定的控制器類處理。

控制器類是這樣的:

@Controller 
public class AccountController { 

    @RequestMapping("/showAccount") 
    public String show(@RequestParam("entityId") long id, Model model) { 
     ... 
    } 

    ....................................... 
    ....................................... 
    ....................................... 
} 

所以我知道每個方法處理特定請求,該處理請求是由@RequestMapping註解指定。

我也知道,該方法返回一個字符串對象,它是邏輯視圖名稱(即再由視圖解析器解決渲染視圖)

所以,在這個階段,我認爲一個控制器類的方法只返回字符串對象。但我不確定。也許像這樣的方法可以返回一些不同類型的對象?

+1

有很多返回類型,你可以返回你需要的東西,檢查這個http://stackoverflow.com/questions/7383622/spring-mvc-controllers-return-type – 2015-03-31 10:05:25

+0

Craig Walls的「Spring in Action」很棒在解釋Spring MVC – 2015-03-31 10:10:30

+0

這是在Spring文檔中非常全面的介紹:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-return-types – 2015-03-31 10:15:10

回答

14

有許多返回類型可用於處理程序方法,它是通過@RequestMapping註釋內部控制器等:

  • ModelAndView的(類)

  • 模型(接口)

  • 地圖
  • 字符串
  • void
  • 查看
  • HttpEntity<?>ResponseEntity<?>
  • HttpHeaders

和更多..... See Docs

每個返回類型有它一樣,如果你使用的是特定的字符串使用那麼就意味着返回查看名稱和此視圖名稱將由ViewResolver解決。如果您不想返回任何視圖名稱,請提及返回類型void。如果你想設置視圖名稱並且想發送一些對象,使用ModelAndView作爲返回類型。

請通過文檔,你也會得到什麼樣的方法參數可以傳遞給處理方法。

2

你必須在doc

直接回答以一個特殊說明的

如果該方法與註釋@ResponseBody,返回類型爲 寫入響應HTTP主體。使用HttpMessageConverters將返回值 轉換爲聲明的方法參數類型。

當方法annoated與@ResponseBody,返回類型可以是任何自定義類型,任何Java POJO,該框架將被轉化爲相應的repsentation JSON,XML等,並寫回響應機構

相關問題