我是靠谱客的博主 朴素宝贝,最近开发中收集的这篇文章主要介绍springMVC的@RequestParam是必须滴,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先看下代码:

@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是必须滴所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部