Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从@RequestParam获取值,但不指定名称_Java_Spring_Annotations - Fatal编程技术网

Java 从@RequestParam获取值,但不指定名称

Java 从@RequestParam获取值,但不指定名称,java,spring,annotations,Java,Spring,Annotations,我知道,如果参数如下所示: @RequestParam("userId") String userId 我可以通过调用以下命令来获取值: requestParam.value() 但是如果我没有指定名称,Spring会自动使用变量名。像这样: @RequestParam String userId 如果未指定参数名称,如何访问它?我知道这是可能的,因为Spring以某种方式实现了这一点,但requestParam.value()在本例中为空。只需调用userId,就像doSomething

我知道,如果参数如下所示:

@RequestParam("userId") String userId
我可以通过调用以下命令来获取值:

requestParam.value()
但是如果我没有指定名称,Spring会自动使用变量名。像这样:

@RequestParam String userId

如果未指定参数名称,如何访问它?我知道这是可能的,因为Spring以某种方式实现了这一点,但requestParam.value()在本例中为空。

只需调用
userId
,就像
doSomething(userId)
一样。Spring会为您绑定所有内容。

Spring不会基于@RequestParam填充请求。相反,它填充了用@RequestParam注释的方法参数(在用@RequestMapping注释的方法中)。给@RequestParam注释的参数告诉Spring您希望它用作该参数的请求参数的名称。如果您没有提供,Spring默认使用参数的名称(因此您在问题中给出的两个示例是等效的)


如果您试图访问请求参数,则需要知道其名称,而不管您使用的是什么框架。

建议您不要这样做。Spring使用
分析java字节码文件并提取方法的参数名。但有时这不起作用,因为某些.class文件不包含参数名,只包含参数类型,这取决于编译器选项。

对于java 8,Spring使用,它依赖于

有关如何设置参数选项并通过反射使用该选项的详细信息,请参见。

says that value()默认返回“”,而不是null。事实上,Java注释不允许包含null。