Spring MVC什么时候不需要@RequestParam批注?

Vic*_*sky 7 java spring-mvc

我正在查看一些Spring 3 MVC控制器代码,并且看到@RequestParam用于某些参数,而不用于其他参数。不使用它的示例:

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

什么时候不需要@RequestParam(或类似的参数指定注释)?

GMs*_*soF 6

很好的问题,我一直想知道,直到我在文档中提到它:

请注意,@ RequestParam的使用是可选的,例如用于设置其属性。默认情况下,任何由BeanUtils#isSimpleProperty确定且不是由任何其他参数解析器解析的简单值类型的参数,都将被视为使用@RequestParam进行了注释。

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

大多数情况下,除非我的方法参数名称与请求参数不同,否则我不会指定此参数,或者,如果该值是可选的,则需要使用required=false

  • 你的回答比 Dani 好。 (2认同)

Dan*_*ani -1

我不太确定你的问题,但只有@RequestParam当你想将方法参数与请求持有的参数绑定时才需要。

我想这已经很清楚

  • 根据我的测试,如果未在 Object 参数上指定 @RequestParam,Spring MVC 默认情况下会尝试绑定到该对象的内部属性。 (3认同)