我只是发现,即使我省略了@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)被视为
请求参数,即使未添加注释也是如此。请求参数
名称是从方法参数名称派生的。