天天看點

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

}      
@GetMapping("/findById")
    public ResultBean byid(@RequestParam(defaultValue = "1",required = false,/*value = "ss",*/name = "ls") Integer id){
        List<Customers> all = customersService.findById(id);
        return ResultBean.ok(all);
    }      

二、說明

2.1 @RequestParam,對于參數入參,這個注解可以不必須有,但隻能比對和你定義的入參,完全一樣的名稱,對應則比對,不對應就不比對。

2.2 required ,是否必須,預設為 true,也就是說,當@RequestParam存在時,是預設required = true條件的,@RequestParam不存在時,傳回 2.1 的解釋。

2.3 defaultValue ,設定初始值,一般和required = false一起使用,如果不傳值,則使用預設值。

2.4 value ,和name,一樣,給變量起别名,一一對應于前端傳的屬性名,映射到後端接口變量名,有時前端無法按要求傳給你你所希望的變量名,這個就發揮用處了。

2.5 name ,和value一樣,給變量起别名,兩個同時存在時,通路時就會出錯。

繼續閱讀