浅谈@RequestParam(required = true)的误区
目录
- @RequestParam(required = true)的误区
- 先说结论
- 参数总结
- @RequestParam(required=false int id)值不传报错
@RequestParam(required = true)的误区
先说结论
required = true是在前端没有传参数的时候报错,并不能防止参数为空。
考虑一下代码:
@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说明了可以不传值,如果是
// 注意现在是String类型的id @RequestParam(required=false Sting id)
这种不传值就不会报错
但如果是标题上写的int类型这种
@RequestParam(required=false int id)
就会报错,因为null不能赋给int。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
解决使用@RequestParam注解和泛型遇到的问题
目录 使用@RequestParam注解和泛型 @RequestParam注解的作用及用法 使用@RequestParam注解和泛型 @RequestParam注解的作用是给传入的参数起一个别名,但是当参数中含有泛型的时候,该注解无法识别泛型 去掉@RequestParam注解之后 @RequestParam注解的作用及用法 最简单的两种写法,在写接口时:加或不加@RequestParam注解的区别 第一种写法参数为非必传,第二种写法参数为必传.参数名为userId 第二种写法可以通过@Requ
-
Spring Boot中@RequestParam参数的5种情况说明
目录 Spring Boot中@RequestParam参数的5种情况 实例如下: Spring Boot注解:@RequestParam详解 1.value:参数名字,即入参的请求参数名字 2.required:该参数是否为必传项. 3.defaultValue:参数的默认值 Spring Boot中@RequestParam参数的5种情况 实例如下: // 可带参数可不带参数,方法都能执行 @RequestMapping("/list") public String test1
-
浅谈@RequestParam 参数是否必须传的问题
一.源码展示 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolea
-
浅谈@RequestParam(required = true)的误区
目录 @RequestParam(required = true)的误区 先说结论 参数总结 @RequestParam(required=false int id)值不传报错 @RequestParam(required = true)的误区 先说结论 required = true是在前端没有传参数的时候报错,并不能防止参数为空. 考虑一下代码: @GetMapping("/userInfo") public void userInfo(@RequestParam(required
-
浅谈docker --privileged=true参数作用
大约在0.6版,privileged被引入docker. 使用该参数,container内的root拥有真正的root权限. 否则,container内的root只是外部的一个普通用户权限. privileged启动的容器,可以看到很多host上的设备,并且可以执行mount. 甚至允许你在docker容器中启动docker容器. $ docker help run ... --privileged=false Give extended privileges to this container
-
浅谈Spring Boot 开发REST接口最佳实践
本文介绍了Spring Boot 开发REST接口最佳实践,分享给大家,具体如下: HTTP动词与SQL命令对应 GET 从服务器获取资源,可一个或者多个,对应SQL命令中的SELECT GET /users 获取服务器上的所有的用户信息 GET /users/ID 获取指定ID的用户信息 POST 在服务器上创建一个新资源,对应SQL命令中的CREATE POST /users 创建一个新的用户 PUT 在服务器上更新一个资源,客户端提供改变后的完整资源,对应SQL命令中的UPDATE PUT
-
浅谈DataFrame和SparkSql取值误区
1.DataFrame返回的不是对象. 2.DataFrame查出来的数据返回的是一个dataframe数据集. 3.DataFrame只有遇见Action的算子才能执行 4.SparkSql查出来的数据返回的是一个dataframe数据集. 原始数据 scala> val parquetDF = sqlContext.read.parquet("hdfs://hadoop14:9000/yuhui/parquet/part-r-00004.gz.parquet") df: or
-
浅谈python print(xx, flush = True) 全网最清晰的解释
原理: print() 函数会把内容放到内存中, 内存中的内容并不一定能够及时刷新显示到屏幕中(应该是要满足某个条件,这个条件现在还不清楚). 使用flush=True之后,会在print结束之后,不管你有没有达到条件,立即将内存中的东西显示到屏幕上,清空缓存. 使用场景: 1.尤其是在while循环中,要想每进行一次while循环体,在屏幕上更新打印的内容就得使用flush = True的参数. 2. 打开一个文件, 向其写入字符串, 在关闭文件f.close()之前, 打开文件是看不到写入的
-
浅谈Python里面None True False之间的区别
None虽然跟True False一样都是布尔值. 虽然None不表示任何数据,但却具有很重要的作用. 它和False之间的区别还是很大的! 例子: >>> t = None >>> if t: ... print("something") ... else: ... print("nothing") ... nothing 区分None和False.使用is来操作! >>> if t is None: ...
-
浅谈为什么Java中1000==1000为false而100==100为true
这是一个挺有意思的讨论话题. 如果你运行下面的代码 Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到 false true 基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的.如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同. 因此,后面一条语句也应该是false
-
浅谈JAVA 线程状态中可能存在的一些误区
BLOCKED 和 WAITING 的区别 BLOCKED 和 WAITING 两种状态从结果上来看,都是线程暂停,不会占用 CPU 资源,不过还是有一些区别的 BLOCKED 等待 Monitor 锁的阻塞线程的线程状态,处于阻塞状态的线程正在等待 Monitor 锁进入 synchronized Block 或者 Method ,或者在调用 Object.wait 后重新进入同步块/方法.简单的说,就是线程等待 synchronized 形式的锁时的状态 下面这段代码中, t1 在等待
-
浅谈spring 常用注解
我们不妨先将spring常用的注解按照功能进行分类 1 .将普通类加入容器形成Bean的注解 日常开发中主要使用到的定义Bean的注解包括(XML方式配置bean暂不讨论): @Component.@Repository.@Service.@Controller.@Bean 其中@Component.@Repository.@Service.@Controller实质上属于同一类注解,用法相同,功能相同,区别在于标识组件的类型.当一个组件代表数据访问层(Dao)时,你可以给它加上@Reposit
随机推荐
- Oracle 查询存储过程做横向报表的方法
- oracle 创建表空间步骤代码
- python利用datetime模块计算时间差
- 理解 JavaScript Scoping & Hoisting(二)
- .net的socket异步通讯示例分享
- PHP登录验证码的实现与使用方法
- JavaScript中的事件处理
- JavaScript原型及原型链终极详解
- Bootstrap滚动监听组件scrollspy.js使用方法详解
- C#中如何执行存储过程方法
- mysql case when group by 实例详解
- C++ 获取进程CPU占用率
- js尾调用优化的实现
- Python批量生成幻影坦克图片实例代码
- Python多进程池 multiprocessing Pool用法示例
- VUE实现图片验证码功能
- python矩阵转换为一维数组的实例
- laravel5实现微信第三方登录功能
- PHP通过curl获取接口URL的数据方法
- Python代码实现删除一个list里面重复元素的方法