1. 注解的属性含义
String name;表示绑定请求参数的名称
String value;表示上面的name的别名。
实际上,上面两个名称互为对方的别名。是用谁都可以。
Boolean required;表示参数是否是必须的,如果required为true,则defaultValue的值就没有意义。
String defaultValue;表示参数的默认值。
2.举个栗子
使用案例:如果请求参数中有currentPage参数就把参数值赋值给main()的形参中,
没有的情况下就给main()的形参赋值为1
@RequestMapping("/main")
public String main(@RequestParam(value="currentPage", defaultValue="1",
required=false) int currentPage, Model model) {
}
3.注解的源码
@AliasFor用来给注解的属性起别名,让使用注解时更加容易理解。
public @interface RequestParam {
/**
* Alias for {@link #name}.
*/
@AliasFor("name")
String value() default "";
/**
* The name of the request parameter to bind to.
* @since 4.2
*/
@AliasFor("value")
String name() default "";
/**
* Whether the parameter is required.
* <p>Defaults to {@code true}, leading to an exception being thrown
* if the parameter is missing in the request. Switch this to
* {@code false} if you prefer a {@code null} value if the parameter is
* not present in the request.
* <p>Alternatively, provide a {@link #defaultValue}, which implicitly
* sets this flag to {@code false}.
*/
boolean required() default true;
/**
* The default value to use as a fallback when the request parameter is
* not provided or has an empty value.
* <p>Supplying a default value implicitly sets {@link #required} to
* {@code false}.
*/
String defaultValue() default ValueConstants.DEFAULT_NONE;