从@RequestParam获取没有指定名称的值

时间:2012-12-16 22:41:42

标签: java spring annotations

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

@RequestParam("userId") String userId

我可以通过调用它来获取值:

requestParam.value()

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

@RequestParam String userId

如果未指定参数名称,我该如何访问它?我知道它可能,因为Spring以某种方式做到了,但在这种情况下requestParam.value()是空白的。

4 个答案:

答案 0 :(得分:7)

Spring不会根据@RequestParam填充请求。而是填充使用@RequestParam注释的方法参数(在使用@RequestMapping注释的方法中)。给予@RequestParam注释的参数告诉Spring您希望它作为该参数使用的请求参数的名称。如果你没有提供一个,Spring默认使用参数的名称(所以你在问题中给出的2个例子是等价的。)

如果您尝试访问请求参数,则无论您使用何种框架,都需要知道它的名称。

答案 1 :(得分:4)

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

答案 2 :(得分:3)

对于Java 8,Spring使用StandardReflectionParameterNameDiscoverer,它依赖于Java 8 Parameters API

有关如何设置参数选项并通过反射使用它的详细信息,请参阅this answer

答案 3 :(得分:0)

只需拨打userId,就像doSomething(userId)一样。春天为你绑定一切。