12

我知道如果参数看起来像这样:

@RequestParam("userId") String userId

我可以通过调用这个来获得价值:

requestParam.value()

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

@RequestParam String userId

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

4

4 回答 4

9

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

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

于 2012-12-16T23:11:52.300 回答
4

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

于 2012-12-17T02:36:55.680 回答
3

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

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

于 2016-09-01T12:14:22.477 回答
0

只需调用userId,如doSomething(userId). Spring为你绑定了一切。

于 2012-12-16T23:08:41.217 回答