天天看點

spring mvc 傳遞對象 二

springcontroller:

spring mvc 傳遞對象 二

@controller  

@requestmapping("/user")  

public usercontroller extends basecontroller{  

    @requestmapping("/adduser")    

    public void testbinderouput(@modelattribute user user, httpservletrequest request, httpservletresponse response){    

        system.out.println(user);    

    }   

}  

use對象:

spring mvc 傳遞對象 二

public class user{  

    private string name;      

    private int sex;      

    private string address;  

    private int id;  

    public int getsex() {  

        return sex;  

    }  

    public void setsex(int sex) {  

        this.sex = sex;  

    public string getaddress() {  

        return address;  

    public void setaddress(string address) {  

        this.address = address;  

    public int getid() {  

        return id;  

    public void setid(int id) {  

        this.id = id;  

    public void setname(string name) {  

        this.name = name;  

請求路徑:

localhost/user/adduser?user.name="test"

那麼在背景接受到的參數中,user對象的name屬性是null。如果路徑換為localhost/user/adduser?name="test",則user對象的name屬性是test。

這裡必須用name="test"而不是user.name="test",因為預設情況下springmvc是不支援user.name這種傳參方式的。

如果有個對象manager中也有name這個相同的屬性,那麼可以采用user.name,manager.name來傳輸參數。但是這個需要在controller中添加一個字首綁定:

添加綁定字首後的controller類如下:

spring mvc 傳遞對象 二

    @initbinder("manager")    

    public void initbinder1(webdatabinder binder) {    

            binder.setfielddefaultprefix("manager.");    

    }    

    @initbinder("user")    

    public void initbinder2(webdatabinder binder) {    

            binder.setfielddefaultprefix("user.");    

        system.out.println(user.getname);    

    @requestmapping("/addmanager")    

    public void testbinderouput(@modelattribute manager manager, httpservletrequest request, httpservletresponse response){    

        system.out.println(manager.getname);    

這樣在使用連接配接localhost/user/adduser?user.name="test",去請求時,背景拿到的name的參數就不為null了。