我只是发现,即使我省略了@RequestParam参数上的organization批注,Spring仍然能够绑定它。

@RequestMapping(value =“”,method = RequestMethod.POST)
@ResponseBody
公共字符串保存(字符串组织){
logger.info(组织); // 有用
}

任何人都可以指向阐明此行为的文档吗?我一直认为@RequestParam是绑定工作所必需的。

谢谢

最佳答案

看一看https://reversecoding.net/spring-mvc-requestparam-binding-request-parameters/有一个解释:

没有@RequestParam的示例

基于列表
在您的应用程序中配置的HandlerMethodArgumentResolver,
@RequestParam也可以省略。如果您看一下
RequestMappingHandlerAdapter的getDefaultArgumentResolvers()方法
最后有以下代码:

//捕获所有resolvers.add(new
RequestParamMethodArgumentResolver(getBeanFactory(),true));

resolvers.add(new ServletModelAttributeMethodProcessor(true));

//捕获所有resolvers.add(new
RequestParamMethodArgumentResolver(getBeanFactory(),true));

resolvers.add(new ServletModelAttributeMethodProcessor(true));

基本上,它已添加到解析器
将useDefaultResolution设置为的RequestParamMethodArgumentResolver
真正。查看文档,我们可以看到这意味着
方法参数,它是一种简单类型,如
BeanUtils.isSimpleProperty(java.lang.Class)被视为
请求参数,即使未添加注释也是如此。请求参数
名称是从方法参数名称派生的。

10-06 03:18