1. 程式人生 > 實用技巧 >3、請求引數繫結

3、請求引數繫結

(1)多個請求引數的繫結

請求連結

 <a href="selectUser?username=xiao&age=18">點選</a>
/**
 * 引數名相同時,spring會通過反射將請求引數的值賦值該方法的引數
 * 當引數名不一致時,通過@RequestParam註解解決
 */
@RequestMapping(value = "/selectUser")
@ResponseBody
public String selectUser(@RequestParam("username") String name, Integer age){
    return name + age;
}

(2)請求引數繫結實體型別

實體類

public class User {
    //基本資料型別
    private String username;
    private Integer age;
     //省略get、set、toString方法

傳送請求

<a href="selectUser?username=xiao&age=18">點選</a>

請求對映

@RequestMapping("/selectUser")
@ResponseBody
public String selectUser2(User user){
    return user.toString();
}

(3)實體類的屬性是實體型別引數繫結

User 類

Account類

public class Account {

    private String id;
    private Double money;

public class User {
    //基本資料型別
    private String username;
    private Integer age;
    //實體類屬性是實體型別
    private Account account;

請求連結

<a href="user/selectUser?username=xiao&age=18&account.id=120658">點選</a>

請求對映

/**請求引數繫結實體類
 * 要求實體類的屬性與請求引數的引數名相同
 */
@RequestMapping("/selectUser")
@ResponseBody
public String selectUser2(User user){
    return user.toString()+ user.getAccount().toString();
}

(4)引數繫結實體類集合屬性

實體類

public class User {
    //基本資料型別
    private String username;
    private Integer age;

    private List<Account> accountList;
    private Map<String, Account> accountMap;

表單

<form action="user/selectUser" method="post">
    姓名:<input type="text" name="username"><br>
    年齡:<input type="text" name="age"><br>
    <h3>List</h3>
    賬戶:<input type="text" name="accountList[0].id"><br>
    金額:<input type="text" name="accountList[0].money"><br>
    <h3>Map</h3>
    賬戶:<input type="text" name="accountMap['ac'].id"><br>
    金額:<input type="text" name="accountMap['ac'].money"><br>

    <input type="submit" value="提交">
</form>

controller

/**請求引數繫結實體類
 * 要求實體類的屬性與請求引數的引數名相同
 */
@RequestMapping("/selectUser")
@ResponseBody
public String selectUser2(User user){
    return user.toString() + user.getAccountList().toString() + user.getAccountMap().toString();
}