浅谈@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 参数是否必须传的问题
一.源码展示 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolea
-
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注解和泛型遇到的问题
目录 使用@RequestParam注解和泛型 @RequestParam注解的作用及用法 使用@RequestParam注解和泛型 @RequestParam注解的作用是给传入的参数起一个别名,但是当参数中含有泛型的时候,该注解无法识别泛型 去掉@RequestParam注解之后 @RequestParam注解的作用及用法 最简单的两种写法,在写接口时:加或不加@RequestParam注解的区别 第一种写法参数为非必传,第二种写法参数为必传.参数名为userId 第二种写法可以通过@Requ
-
浅谈@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
随机推荐
- Swift中使用可选类型完美解决占位问题
- PHP字符串的连接的简单实例
- C#连接MySql数据库的方法
- 3种不同方式的焦点图轮播特效分享
- Android实现手势滑动多点触摸缩放平移图片效果
- java 中 zookeeper简单使用
- java多线程学习之死锁的模拟和避免(实例讲解)
- asp.net实现图片以二进制流输出的两种方法
- 防止在服务器处理完成之前用户多次点击提交按钮处理代码
- thinkphp判断访客为手机端或PC端的方法
- Android 文件操作详解及简单实例
- MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解决方法[已测]
- MySQL DNS的使用过程详细分析
- 详解Python的Flask框架中生成SECRET_KEY密钥的方法
- sqlserver 存储过程分页代码第1/2页
- jQuery下通过replace字符串替换实现大小图片切换
- ASP.NET jquery ajax传递参数的实例
- 详解Nginx服务器中map模块的配置与使用
- Java中高效的判断数组中某个元素是否存在详解
- php 截取GBK文档某个位置开始的n个字符方法