這篇文章主要介紹了SpringMVC如何解決同名參數綁定問題,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
例如,我的表單是這樣的:
<span style="font-size: 16px;"><form action="/test.action" method="post"> <br> <input name="user.name"> <br> <input name="acc.name"> <br> <input type="submit"> <br></form> <br></span>
如果是sturts的話,這個很好解決,在Controller宣告user和acc物件就行了,但是SpringMVC的參數綁定和struts不一樣,它會自動的去找對應的屬性綁定,而如果你的action是這樣的:
<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(Account account, User user){<br> System.out.println(user);<br> System.out.println(account);<br>} <br></span>
這樣的話是會報錯的,怎麼辦呢?
這裡要用到@InitBinder這個註解,詳細的解釋可以找相關資料,這裡只講怎麼用。在Controller類別中加入下面兩個方法,作用是把指定的開頭標識符的值賦給成指定名字的物件
<span style="font-size: 16px;">@InitBinder("account") <br>public void initAccountBinder(WebDataBinder binder) { <br> binder.setFieldDefaultPrefix("acc."); <br>} <br><br>@InitBinder("user") <br>public void initUserBinder(WebDataBinder binder) { <br> binder.setFieldDefaultPrefix("user."); <br>}<br></span>
#然後把action方法改造成下面這樣就可以了。
<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(@ModelAttribute("account") Account account, @ModelAttribute("user") User user){<br> System.out.println(user);<br> System.out.println(account);<br>}<br></span>
注意@ModelAttribute裡面的參數要跟上面定義的@InitBinder裡面的值對應,否則是取不到值的。
相關推薦:
#關於springmvc pojo參數綁定「不成功」的一個原因
#以上是SpringMVC如何解決同名參數綁定問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!