服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 浅谈@RequestParam(required = true)的误区

浅谈@RequestParam(required = true)的误区

2022-03-13 16:35couthz Java教程

这篇文章主要介绍了@RequestParam(required = true)的误区,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@RequestParam(required = true)的误区

先说结论

required = true是在前端没有传参数的时候报错,并不能防止参数为空。

考虑一下代码:

?
1
2
3
4
@GetMapping("/userInfo")
    public void userInfo(@RequestParam(required = true) Integer id) {
           ...
    }

如果请求如下就会报400错误:

http://localhost:8088/userInfo

但构造以下请求,可以使id为空:

http://localhost:8088/userInfo?id=

参数总结

  • required=true表示前端必须传参数。
  • required=false表示前端不传参数的时候,会将参数置为null。因此假如参数是int这种不能赋值为null的类型,就可能会报错。

使用了defaultValue,required只能为false,前端不传参数时会将参数置为defaultValue。

@RequestParam(required=false int id)值不传报错

@RequestParam(required=false int id):required=false说明了可以不传值,如果是

?
1
2
// 注意现在是String类型的id
@RequestParam(required=false Sting id)

这种不传值就不会报错

但如果是标题上写的int类型这种

?
1
@RequestParam(required=false int id)

就会报错,因为null不能赋给int。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/a34434180/article/details/105155852

延伸 · 阅读

精彩推荐