2013-04-25 76 views
3

我期待通過一些彈簧3 MVC控制器代碼,我看到@RequestParam用於某些參數,而不是爲別人。實施例,其中沒有使用它:何時在Spring MVC中不需要@RequestParam註解?

@RequestMapping(value = "/experiments", method = RequestMethod.GET) 
public String getExperimentsPage(ExperimentSearchCriteria criteria, Map<String, Object> model) { 
    // method body here 
} 

當@RequestParam(或類似的參數 - 指定註釋)不需要?

+1

我的測試顯示,如果你有一個'@ Controller'「動作」法非註解參數,Spring會嘗試綁定類似命名的請求參數(否則忽略參數) 。但是,當您打算使用請求參數填充操作方法參數時,最好是明確的並使用@ RequestParam註解。當然,它可以通過'@ RequestParam'的屬性(如默認和必需)調整用法來爲您提供更多的控制權。 – 2016-11-10 20:48:51

回答

1

我真的不知道你的問題,但你只需要@RequestParam當你想綁定的請求召開的參數的方法的參數。

我認爲這是相當清楚的here

+1

從我的測試中,如果不是在一個對象參數指定@RequestParam時,Spring MVC的默認情況下將嘗試綁定到該對象的內部屬性。 – 2013-04-26 17:29:38

1

好問題,我一直在想這太,直到我發現它在文檔被提及:

注意,使用@RequestParam是可選的,例如設置其 屬性。默認情況下,這是一個簡單的值類型, 通過BeanUtils的#isSimpleProperty決定,而不是由任何其他 參數解析器解析的任何說法,就好像是用 @RequestParam註釋進行處理。

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestparam

大部分的時間,我不指定這一點,除非我的方法的參數名稱與請求參數,或者,如果該值是可選的,我將需要使用不同的required=false

+0

你的回覆比丹妮好。 – blackdog 2018-01-24 03:27:32

0

@RequestParam用於傳遞查詢參數。

例子:http://localhost:8080/employee/get?status=ACTIVE

在這裏,我們可以用下面的代碼

@RequestParam(值=「狀態」)字符串狀態獲取狀態

我們有這樣要求的,默認值等一些屬性如果您提供required = false,如下面的代碼行所示,URL中的狀態參數不是強制性的

@RequestParam(value =「status」,required = false)

的URL會像http://localhost:8080/employee/get

相關問題