red*_*hka 4 java spring spring-mvc
我刚刚发现,即使我省略了参数@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() 的代码,则最后有以下代码段:
// Catch-all resolvers.add(new RequestParamMethodArgumentResolver(getBeanFactory(), true));
resolvers.add(new ServletModelAttributeMethodProcessor(true));
// Catch-all resolvers.add(new RequestParamMethodArgumentResolver(getBeanFactory(), true));
resolvers.add(new ServletModelAttributeMethodProcessor(true));
基本上,它向解析器添加了一个 RequestParamMethodArgumentResolver,其中 useDefaultResolution 设置为 true。查看文档我们可以看到,这意味着 BeanUtils.isSimpleProperty(java.lang.Class) 中定义的简单类型的方法参数被视为请求参数,即使它没有注释。请求参数名称源自方法参数名称。
| 归档时间: |
|
| 查看次数: |
825 次 |
| 最近记录: |