首頁 >後端開發 >php教程 >SpringMVC如何解決同名參數綁定問題

SpringMVC如何解決同名參數綁定問題

零到壹度
零到壹度原創
2018-04-04 17:41:451312瀏覽

這篇文章主要介紹了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物件綁定參數重名解決

Spring MVC 不同物件的同名參數綁定

#關於springmvc pojo參數綁定「不成功」的一個原因

#

以上是SpringMVC如何解決同名參數綁定問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn