当前位置: 首页 > 知识库问答 >
问题:

@RequestParam省略,但映射仍然正确

包沈义
2023-03-14

我刚刚发现,即使省略了organization参数上的@requestparam注释,Spring仍然能够绑定它。

@RequestMapping(value="", method = RequestMethod.POST)
@ResponseBody
public String save(String organization){
    logger.info(organization); // it works
}

有人能指出澄清这种行为的文档吗?我一直认为@requestparam是绑定工作所必需的。

谢谢

共有1个答案

傅安宁
2023-03-14

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

没有@RequestParam的示例

根据应用程序中配置的HandlerMethodArgumentResolver列表,也可以省略@RequestParam。如果您查看RequestMappingHandlerAdapter的getDefaultArgumentResolvers()方法的代码,那么末尾有以下代码:

resolvers.add(new ServletModelAttributeMethodProcessor(true));

基本上,它是在解析器中添加一个RequestParamMethodArgumentResolver,useDefaultResolution设置为true。查看文档,我们可以看到,这意味着方法参数(如Beanutils.IsSimpleProperty(java.lang.class)中定义的简单类型)被视为请求参数,即使它没有注释。请求参数名称派生自方法参数名称。

 类似资料:
  • 我对的枚举有问题。在方法中有两个枚举:和。是内置的Spring枚举,它完美地从String转换为Enum: 但是当我打电话的时候 我阅读并测试了: 带枚举的Spring的@RequestParam Spring Boot能够接受枚举作为请求参数 枚举作为Spring Boot Rest中的请求参数 如何在RequestParm中将多个值转换为枚举? @RequestParam defaultval

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 我有一个Getendpoint,它接受查询字符串作为请求参数。endpoint的问题是请求参数字符串可能包含像?,/etc这样的字符,这导致了问题。有什么方法可以将包含?,/etc的字符串映射到rest控制器中的变量吗? 已经尝试使用@PathVariable而不是@RequestParam,但是它仍然没有正确读取值。当使用@PathVariable映射uri时,?被省略了。当使用@Request

  • 省略 不推荐省略 0 值单位,原因如下: CSS 规范中可以省略单位只有 [<length-percentage>](https://drafts.csswg.org/css-values-3/#typedef-length-percentage),其他比如角度单位 deg 在 Chrome 中可以省略, 这是浏览器的 Bug。 注:可以省略的单位包括:%|em|ex|ch|rem|vw|vh|v

  • 我有一个Json数组,数组中包含< code>null值。 如何配置Jackson ObjectMapper以忽略此类数组元素-就好像它是空数组? 约束: 没有控制源类-它是第三方类 数组元素类型前期未知 数组名称前面未知

  • 问题内容: 我有一个Java对象具有属性,等属性通过额外的间接水平可能访问:,,如果不公开。 挑战 :我想一个函数,一个对象,并返回一个,其中的键是字符串,等等和值对应的对象,。我想函数会被类似的东西调用 , 或(其中和是的属性的子集), 或如有必要。 我对Java的自省了解不多:如何在Java中做到这一点? 现在,对于我关心的每个对象类型,我都有一个专门的实现,这太样板了。 注意 :对于那些了解