對于普通的對象參數綁定,我們隻需要對象成員變量名與請求參數名一一對應即可完成綁定。
而求對于組合對象,我們可以使用級聯的方式來綁定方法參數。見下面執行個體:
我們先定義兩個pojo類:user,article其中atricle是user的成員屬性:
下面是我們的測試前端表單:
下面是我們的控制層方法:
我們在前端表單輸入參數如下所示:

點選送出後,頁面輸出:
或者我們也可直接通過通路如下連結得到相同結果:
<a href="http://localhost:8080/springmvc/saveuser?username=username&password=password&article.title=title&article.content=content">http://localhost:8080/springmvc/saveuser?username=username&password=password&article.title=title&article.content=content</a>
從上可知,對于user的成員屬性article,如果我們綁定其對應的參數,可以通過級聯article.title,article.content來完成。 在這裡,如果我在控制器的方法入參中,同時定義多個user,或者有多個不同的類執行個體對象。隻要它們的成員屬性名和參數名相同,都會完成綁定
數組參數分為普通類型數組和複雜對象數組兩種,但由于沒有複雜對象數組的構造方法,springmvc隻能綁定普通類型數組。
普通類型數組是指integer、stirng、long等基本資料類型的包裝類,下面通過執行個體來看如何完成綁定工作:
控制器方法:
前端表單定義:
送出如下資料:
此時遊覽器輸出:
對于list、set、map等的參數綁定,如果我們嘗試直接綁定,是會失敗的,必須将其作為一個具體類對象的成員屬性,這個時候我們也可稱這個具體類對象為一個包裝類。先看下面失敗執行個體:
我們的請求url和輸出結果如下圖所示:
它的輸出結果為空json數組,說明我們的綁定失敗了。
這裡遇到的一個主要問題是,如果我們綁定set類型參數時,必須先為set添加預定大小的容器,否則會報錯。而且也不支援基本資料類型包裝類的set綁定,**如果需要完成這一轉換,需要我們自定義轉換器來實作。 下面我們通過一個完整的綜合例子來展示集合類型的參數綁定:
我們的控制層方法極為簡單:
我們輸入如下圖所示的參數:
點選送出按鈕,獲得輸出資料:
或者我們也可以通過遊覽器位址通路:
<a href="http://localhost:8080/springmvc/getall?username=username1&password=password1&numlist%5b0%5d=11&numlist%5b1%5d=22&articlelist%5b0%5d.title=title1&articlelist%5b0%5d.content=content1&articlelist%5b1%5d.title=title2&articlelist%5b1%5d.content=content2&articleset%5b0%5d.title=title3&articleset%5b0%5d.content=cotent3&articleset%5b1%5d.title=title4&articleset%5b1%5d.content=cotent4&nummap%5b%27num1%27%5d=55&nummap%5b%27num2%27%5d=66&articlemap%5b%27article1%27%5d.title=title5&articlemap%5b%27article1%27%5d.content=content5&articlemap%5b%27article2%27%5d.title=title6&articlemap%5b%27article2%27%5d.content=content6">http://localhost:8080/springmvc/getall?username=username1&password=password1&numlist[0]=11&numlist[1]=22&articlelist[0].title=title1&articlelist[0].content=content1&articlelist[1].title=title2&articlelist[1].content=content2&articleset[0].title=title3&articleset[0].content=cotent3&articleset[1].title=title4&articleset[1].content=cotent4&nummap[%27num1%27]=55&nummap[%27num2%27]=66&articlemap[%27article1%27].title=title5&articlemap[%27article1%27].content=content5&articlemap[%27article2%27].title=title6&articlemap[%27article2%27].content=content6</a>
從上面我們可以看到,使用綁定list和set入參都是以成員屬性名[索引](.級聯成員屬性名)的形式完成綁定,使用map的話則以成員屬性名[鍵名](.級聯成員屬性名)的形式完成綁定