定義與作用
此註解用於從請求正文中獲取請求參數,給控制器形參賦值。如果控制器方法形參與請求正文中的參數名一致時,就無需使用該註解。在spring2.5之後出現。
當請求中沒有參數時,RequestParam註解還能爲該形參提供一個默認值。
//只能作用於方法形參上。
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
//參數名,如果方法形參與請求傳遞過來的參數名不一致時,就要使用該屬性進行參數綁定,該屬性的值要與要綁定的請求參數名一致。
@AliasFor("name")
String value() default "";
//與value屬性互爲別名。作用一樣
@AliasFor("value")
String name() default "";
/**
* 該參數是否必須,如果true的話,當請求中沒有傳遞該參數就報錯。
*/
boolean required() default true;
/**
*默認值,當獲取的不到請求中的該參數時就提供一個默認值。
*/
String defaultValue() default ValueConstants.DEFAULT_NONE;
}
@Controller
public class RequestParamController {
@RequestMapping("testRequestParam1")
public String testRequestParam1(String name,String value){
System.out.println("name = " + name);
System.out.println("value = " + value);
return "RequsetParamDemo";
}
@RequestMapping("testRequestParam2")
public String testRequestParam2(User user){
System.out.println("user = " + user);
return "RequsetParamDemo";
}
}
testRequestParam1結果:
因爲請求參數與控制器形參一樣,所以能夠進行正常的參數綁定。
如果請求參數與控制器形參一樣,不一樣。
參數綁定失敗。
此時就要使用RequestParam註解。
綁定成功。 這是RequestParam主要功能。
如果形參時實體類,或者不是基本類型及其包裝類以及string的話,RequestParam的綁定就沒有用處。要使用其他方法或者遵循springmvc約定。
使用boolean required() default true;
該屬性用於標誌該參數是否必須,如果爲true,並且請求中沒有找到該參數進行綁定就會報400錯誤。默認爲true。
少了value1參數。
改爲false。
請求成功,但是爲null值,因爲沒有綁定到。
String defaultValue() default ValueConstants.DEFAULT_NONE;
當沒有綁定到參數時,提供一個默認值。
@RequestMapping("testRequestParam3")
public String testRequestParam3( @RequestParam(name = "page",defaultValue = "1") Integer page){
System.out.println("page = " + page);
return "RequsetParamDemo";
}
請求不提供page參數。
使用默認值1
請求添加page參數
就使用請求傳遞的值。