详解RequestParam注解

1、前言

  • 作用:主要用于对前端请求的参数进行一些约束,包括参数名不匹配问题、是否必须、默认值!

  • 这个注解非常简单,准确的说应该是MVC中除了Controller之外最简单的注解。

@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 ValueConstants.DEFAULT_NONE;

}
  • 虽然有四个属性实际上就三个,name属性和value属性一个意思,相互起别名跟对方一样。

  • Target的元注解约束这个注解只能使用在参数上,Retention元注解表示这个注解的保存时间这里表示
    可以在运行时JVM反射加载到!



2、name/value属性

  • 这两个属性是当前后端参数不匹配时进行前后端参数转换,即前端 - name/value - 后端参数!

  • 一旦加了设置name/value表示这个参数必须传递,否则400错误

  • 这种做法很鸡肋,不匹配直接照着前端改就行,有点画蛇添足。

@RequestMapping("/hello2")
public String get2(@RequestParam("a") String args, Model model){
    model.addAttribute("value", args);
    return "hello";
}

在这里插入图片描述



3、required属性

  • 这个属性是搭配name/value一起使用的,默认不指定情况下是true。

  • 上文中发现一旦设置了name/value表示这个参数必须要有,而required可以设置为false表示这个参数可有可无!

@RequestMapping("/hello3")
public String get3(@RequestParam(name = "a", required = false) String args, Model model){
    model.addAttribute("value", args);
    return "hello";
}

在这里插入图片描述



4、defaultValue属性

  • 表示在没有传递参数的的情况下的该参数使用的默认值。

  • 一般搭配required=false一起使用!如果required=true必须指定那还需要默认值干啥?

@RequestMapping("/hello4")
public String get4(@RequestParam(name = "a", defaultValue = "这是默认值", required = false) String args, Model model){
    model.addAttribute("value", args);
    return "hello";
}

在这里插入图片描述



  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值