概述
先看下代码:
@RequestMapping(value = "/campaigns/{pageNo}/{pageSize}", method = RequestMethod.GET)
public String getList(@PathVariable("pageNo") int pageNo,
@PathVariable("pageSize") int pageSize,
@RequestParam(defaultValue = "0") int status,
@RequestParam(required=false) String keyword) {
//....
return null;
}
1.@RequestParam
在上面代码中,一般情况下@RequestParam不加,方法参数也一样能获取对应绑定的数据,所以很多人都认为@RequestParam是可加可不加的。直到后来才了解到,Java的反射机制生成的对象并不会保存包含方法的参数,即参数名不会保留在class文件中,所以spring不能反射绑定。
那么问题来了,为什么我们平时都能绑定呢?
这是因为,在Debug模式开启情况下,就能绑定,而我们一般用的eclipse都是默认开启的。Debug模式下之所以能够绑定,是因为在project–>Properties–>Java Compiler里选中了Add variable attributes to generated class files(used by the debugger)。要知道,开启Debug模式会影响性能的,所以正式上线的时候,都会关掉的,如果我们没加的话就会报以下错误:
Request processing failed;nested exception is java.lang.IllegalArgumentException:Name for argument type ….
2.@PathVariable
@PathVariable是用来指定获取@RequestMapping里URL中占位符参数的字段,如上面的@PathVariable(“pageNo”) int pageNo中的pageNo字段就是为了获取{pageNo}这个占位符的值。@PathVariable括号里的名字必须与占位符的名字一致,而字段名可以不用一样。如果括号里不指定名字,则在非debug模式下也会遇到1的问题
所以,@PathVariable括号里的名字是必须的。
最后
以上就是朴素宝贝为你收集整理的springMVC的@RequestParam是必须滴的全部内容,希望文章能够帮你解决springMVC的@RequestParam是必须滴所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复