我知道如果参数如下所示:
@RequestParam("userId") String userId
我可以通过调用它来获取值:
requestParam.value()
但是如果我没有指定名称,Spring会自动使用变量名称。像这样:
@RequestParam String userId
如果未指定参数名称,我该如何访问它?我知道它可能,因为Spring以某种方式做到了,但在这种情况下requestParam.value()是空白的。
答案 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)
一样。春天为你绑定一切。