SpringMVC數據綁定一(基本類型、數組和對象(簡單對象、層級對象、多參數對象))


一、int和Integer類型

      如:參數為int類型的請求

@Controller
public class TestController {
    @RequestMapping(value="/baseType")
    @ResponseBody//直接返回字符串界面,不用請求獲取jsp頁面。去掉報404錯誤,找不到頁面。
    public String baseType(int age) {
        return "age:"+age;
    }
}

      1。參數為int類型的請求,若沒有傳入參數,報500的錯誤

  

  2.參數為int類型的請求,若參數類型錯誤,報400的錯誤

  

  正確

  

      1.2@RequestParam 

@Controller
public class TestController {
    @RequestMapping(value="/baseType")
    @ResponseBody
    //@RequestParam注解value屬性為傳參別名,defaultValue默認賦值,required是否必須傳值默認true。
    //若把required設置為false,不傳參則不報錯
    public String baseType(@RequestParam(value="xage",defaultValue="1",required=false) int age) {
        return "age:"+age;
    }
}

      如:參數為Integer類型

       1.若參數請求為Integer類型,沒有參數,自動給參數賦值為null

  

  2.若參數請求為Integer類型,參數l類型不匹配,同上也報400錯誤。

二、參數為數組類型

 //http://127.0.0.1:8080/SpringMVC/array?name=Tom&name=Lucy&name=jim
    @RequestMapping(value="array")
    @ResponseBody
    public String array(String[] name) {
        StringBuilder sbf = new StringBuilder();
        for(String item:name) {
            sbf.append(item).append(" ");
        }
        return sbf.toString();
    }

三、參數為對象(簡單對象)

//model
public class User {
    private String name;
    private Integer age;
    
    //getter and setting ......
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
}
 //http://127.0.0.1:8080/SpringMVC/object?name=Tom&age=20
    @RequestMapping(value="object")
    @ResponseBody
    public String object(User user) {
        return user.toString();
    }    

 三、參數為對象(多層級對象)

  1.1model

//聯系信息類
public class ContactInfo {
    private String phone;
    private String address;
    //getting and setting............
    @Override
    public String toString() {
        return "ContactInfo [phone=" + phone + ", address=" + address + "]";
    }
}
//用戶類
public class User {
    private String name;
    private Integer age;
    private ContactInfo contactInfo; //getting and setting............
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", contactInfo=" + contactInfo + "]";
    }
}
//http://127.0.0.1:8080/SpringMVC/object?name=Tom&age=20&contactInfo.phone=10086&contactInfo.address=ss
    @RequestMapping(value="object")
    @ResponseBody
    public String object(User user) {
        return user.toString();
    }

結果顯示:

1.2 若參數為2個對象

 

@RequestMapping(value="object")
    @ResponseBody
    public String object(User user,Admin admin) {
        return user.toString()+" "+admin.toString();
    }

 

 

兩個參數對象被賦予相同的參數

解決辦法@InitBinder

//http://127.0.0.1:8080/SpringMVC/object?user.name=Tom&age=20&admin.name=lucy
@RequestMapping(value="object") @ResponseBody public String object(User user,Admin admin) { return user.toString()+" "+admin.toString(); } @InitBinder("user") public void initUser(WebDataBinder binder) { binder.setFieldDefaultPrefix("user."); } @InitBinder("admin") public void initAdmin(WebDataBinder binder) { binder.setFieldDefaultPrefix("admin."); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM