@RequestParam
作用:该注解描述了一个方法参数变量应该被一个web请求参数绑定。如果使用@RequestParam不指定具体的web请求参数名称,那么默认其与方法变量参数名称相同。
那么问题来了,如果使用@RequestParam不指定具体的web请求参数名称,SpringMVC如何做到得知一个方法参数变量的名称的呢?你可能想可不可以通过反射,确实是通过反射获取。那么反射为什么能获取,除非在编译的时候保留了原本参数名称,否则Class类中一样得不到原本的参数名称。
最终导致的问题就是,如果编译不保留方法的参数名称,不指定具体的web请求参数名称的@RequestParam就会工作失败。
规范:所有类似@RequestParam这种需要基于变量参数名称的注解,必须手动填写指定参数具体名称。
相关文章:
你不知道的SpringMVC——@RequestParam必须要加上参数名
JDK8新特性:编译器保留方法参数名字
Java8获取参数名及Idea/Eclipse/Maven配置