Java Spring MVC中何时不需要@RequestParam注释?

Java Spring MVC中何时不需要@RequestParam注释?,java,spring-mvc,Java,Spring Mvc,我正在浏览一些Spring3MVC控制器代码,我看到@RequestParam用于某些参数,而不用于其他参数。未使用的示例: @RequestMapping(value = "/experiments", method = RequestMethod.GET) public String getExperimentsPage(ExperimentSearchCriteria criteria, Map<String, Object> model) { // method bo

我正在浏览一些Spring3MVC控制器代码,我看到@RequestParam用于某些参数,而不用于其他参数。未使用的示例:

@RequestMapping(value = "/experiments", method = RequestMethod.GET)
public String getExperimentsPage(ExperimentSearchCriteria criteria, Map<String, Object> model) {
    // method body here
}
@RequestMapping(value=“/experiments”,method=RequestMethod.GET)
公共字符串getExperimentsPage(ExperimentSearchCriteria条件,映射模型){
//方法体在这里
}

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

我不太确定您的问题,但您只需要
@RequestParam
将方法参数与请求持有的参数绑定


我认为这很清楚。

好问题,我也一直在想这个问题,直到我发现文件中提到:

请注意,使用@RequestParam是可选的,例如设置其 属性。默认情况下,任何简单值类型的参数,如 由BeanUtils确定#isSimpleProperty,不由任何 另一个参数解析器被视为使用 @请求参数


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

@RequestParam来传递查询参数

例如:

在这里,我们可以通过下面的代码获得状态

@RequestParam(value=“status”)字符串状态

我们有一些属性,如required、defaultValue等。如果您提供下面代码行中提到的required=false,则在URL中状态参数不是必需的

@RequestParam(value=“status”,required=false)


URL将类似于我的测试中的

,如果对象参数上未指定@RequestParam,Spring MVC将在默认情况下尝试绑定到该对象的内部属性。我的测试显示,如果在
@Controller
的“action”方法中包含未注释的参数,Spring将尝试绑定类似命名的请求参数(否则将忽略该参数)。但是,当您打算使用请求参数填充操作方法参数时,最好是显式地使用
@RequestParam
注释。当然,它可以通过
@RequestParam
的属性(如default和required)来调整使用情况,从而为您提供更多的控制。您的回复比Dani更好。如果您使用
optional
作为参数类型,您也可以不为可选参数指定
@RequestParam