当前位置:网站首页>@RequestParam注解的正确使用方式
@RequestParam注解的正确使用方式
2022-07-20 22:53:00 【Redis_6389】
@RequestParam详解
前言
@RequestParam注解是作用在controller层上的,它可以将前端发送的请求参数绑定到controller层的方法参数上。根据真是业务需求有时方法参数并不需要传递该参数,则可以通过使用该注解来达到这个目的。
一、@RequestParam注解源码
@Target({
ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}
二、@RequestParam正确使用方式
[email protected]用法
@RequestParam(required = false/true,value = “参数名”,defaultValue = “”) name和value等效这里用value,推荐使用value
value:参数名,前端请求必须使用指定该参数名,不然项目会报错。
required:前端请求该方法是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值。
2.controller层代码
@ApiOperation(value = "班级列表")
@GetMapping("/class/list")
public Message.DataRespone<UOrganizationClass> organizationClassList(
//不写required 查看其默认是否为true
@RequestParam(value = "organizationId") Integer organizationId,
int schoolId,
@RequestParam(required = true, defaultValue = "") String className,
@RequestParam(required = false, defaultValue = "") String openYear,
PageVo pageVo) {
SSystemUser systemUser = getUserInfo();
//organizationId = getCanCtrlOrganizationId(organizationId);
//如果没有传organizationId就从token中获取organizationId
if (organizationId == null || "".equals(organizationId)) {
organizationId = systemUser.getOrganizationId();
}
int dataLevel = getUserDataLevel();
PageInfo<UOrganizationClass> result = organizationService.listClass(systemUser.getId(), organizationId, schoolId, dataLevel, className, openYear, pageVo.getPageNumber(), pageVo.getPageCount());
return Message.Success.createWithPageInfo(result);
}
3.postman测试
1.前端只传一个schoolId参数,查看返回结果。
查看后台控制台:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'organizationId' for method parameter type Integer is not present]
2022-07-20 13:31:16.363 [http-nio-9989-exec-1] DEBUG o.s.web.servlet.DispatcherServlet - Completed 400 BAD_REQUEST
大概意思是需要带上请求参数organizationId,但是方法参数现在没有。所以得出结论:
required 默认值是true 即 @RequestParam(value = “organizationId”) Integer organizationId 等价 @RequestParam(required = “true”, value = “organizationId”) Integer organizationId
2.前端传递organizationIda参数,查看返回结果。
查看后台控制台:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'organizationId' for method parameter type Integer is not present]
2022-07-20 13:40:23.836 [http-nio-9989-exec-4] DEBUG o.s.web.servlet.DispatcherServlet - Completed 400 BAD_REQUEST
还是报同样的错误。得出结论:
@RequestParam(value = “organizationId”) Integer organizationId 参数名必须和传递的参数名一致
3.前端传递多个参数,查看返回结果。
3.前端调试参数,查看代码参数值。
className没传值默认值defaultValue=“”,className: “”。
总结
@RequestParam(required = false/true,value = “参数名”,defaultValue = “”) name和value等效这里用value,推荐使用value
value:参数名,前端请求必须使用指定该参数名,不然项目会报错。
required:前端请求该方法是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值。
边栏推荐
猜你喜欢
My SQL is OK. Why is it still so slow? MySQL locking rules
王者荣耀商城异地多活架构设计(架构实战营 模块七作业)
联邦学习: 联邦场景下的时空数据挖掘
Okaleido tiger NFT is about to log in to the binance NFT platform. Are you looking forward to it?
第03篇:SQL语法树解析
如何将 @Transactional 事务注解运用到炉火纯青?
BCG attribute list
Writing GPIO driver for raspberry pie (detailed tutorial)
The top three suddenly changed, revealing the latest ranking of programming languages in July
Message queue rockermq development practice
随机推荐
入门软件测试小知识点
Typescript function extension use
让实习生搭个Redis集群,差点把我”搭“进去~~~
Four redis cluster schemes and their advantages and disadvantages
403. 青蛙过河
Splunk HEC Open 8088 port
1486. 数组异或操作
Explanation of redis memory model
王者荣耀商城异地多活架构设计(架构实战营 模块七作业)
kube-proxy 工作原理
【面試:並發篇19:多線程:Park&Unpark】
740. Delete and get points
938. Range and of binary search tree
shell脚本按日期范围和间隔下载数据
477. 汉明距离总和
项目经理如何做好“老板”项目
Kube controller manager principle
Kubernetes deploy mysql5.7 (single node)
Games101 graphics p12 notes (geometry3)
《云原生-Kubernetes篇》深入剖析Kubernetes中pod的原理