码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC @RequestParam 注解加与不加的区别

时间:2018-08-06 13:01:01      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:code   stp   style   的区别   tle   button   localhost   tracking   required   

 以前写controller层的时候都是默认带上 @RequestParam 的, 今天发现不加@RequestParam 也能接收到参数


下面我们来区分一下加与不加的区别

这里有两种写法


  1. @RequestMapping("/list")
  2. public String test(@RequestParam Long parentId) {
  3. }


  1. @RequestMapping("/list")
  2. public String test( Long parentId) {
  3. }

第一种必须带有参数,也就是说你直接输入localhost:8080/list 会报错 不会执行方法 只能输入localhost:8080/list?parentId=? 才能执行相应的方法

第二种 可带参数也可不带参数  就是说你输入  localhost:8080/list  以及 localhost:8080/list?parentId=?  方法都能执行


当然你也可以设置 @RequestParam 里面的required为false(默认为true 代表必须带参数) 这样就跟第二种是一样的了

如下:

  1. @RequestMapping("/list")
  2. public String test(@RequestParam(required=false) Long parentId) {
  3. .....
  4. }


当然你还可以设置里面的defaultValue的属性

如下:

  1. @RequestMapping("/list")
  2. public String test(@RequestParam(defaultValue="0") Long parentId) {
  3. ...
  4. }
这样在地址里面也可以不带参数,如果带了参数会接收,不带参数会默认为0


里面还有一个value属性也讲一下, 前面所有的方法 传入的参数必须为parentId 才能接收到值

但是如果你加了value属性

  1. @RequestMapping("/list")
  2. public String test(@RequestParam(value="id") Long parentId) {
  3. ..
  4. }

这样会用id 代替parentId  也就是说你地址里面传入的参数名称为id localhost:8080/list?id=? 这种




SpringMVC @RequestParam 注解加与不加的区别

标签:code   stp   style   的区别   tle   button   localhost   tracking   required   

原文地址:https://www.cnblogs.com/CodingUniversal/p/9429579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!