Spring MVC數據綁定大全 .

本文轉載自:https://www.cnblogs.com/xd502djj/archive/2013/08/08/3245485.html 作者:xd502djj 轉載請註明該聲明。

剛開始用spring mvc 做web開發時,經常會不知道如何合適綁定頁面數據.用慣struts2的朋友更認爲spring mvc 綁定數據不如struts2方便(本人最開始也是這麼認爲),經過一段時間的應用和測試,總結出以下幾種情況,希望對剛接觸spring mvc 的朋友有所幫助.

示例程序下載

查看spring源碼可以看出spring支持轉換的數據類型已經很多了.

 

org.springframework.beans.PropertyEditorRegistrySupport.java

  1. /** 
  2.      * Actually register the default editors for this registry instance. 
  3.      */  
  4.     private void doRegisterDefaultEditors() {  
  5.         this.defaultEditors = new HashMap<Class, PropertyEditor>(64);  
  6.         // Simple editors, without parameterization capabilities.   
  7.         // The JDK does not contain a default editor for any of these target types.   
  8.         this.defaultEditors.put(Charset.classnew CharsetEditor());  
  9.         this.defaultEditors.put(Class.classnew ClassEditor());  
  10.         this.defaultEditors.put(Class[].classnew ClassArrayEditor());  
  11.         this.defaultEditors.put(Currency.classnew CurrencyEditor());  
  12.         this.defaultEditors.put(File.classnew FileEditor());  
  13.         this.defaultEditors.put(InputStream.classnew InputStreamEditor());  
  14.         this.defaultEditors.put(Locale.classnew LocaleEditor());  
  15.         this.defaultEditors.put(Pattern.classnew PatternEditor());  
  16.         this.defaultEditors.put(Properties.classnew PropertiesEditor());  
  17.         this.defaultEditors.put(Resource[].classnew ResourceArrayPropertyEditor());  
  18.         this.defaultEditors.put(TimeZone.classnew TimeZoneEditor());  
  19.         this.defaultEditors.put(URI.classnew URIEditor());  
  20.         this.defaultEditors.put(URL.classnew URLEditor());  
  21.         // Default instances of collection editors.   
  22.         // Can be overridden by registering custom instances of those as custom editors.   
  23.         this.defaultEditors.put(Collection.classnew CustomCollectionEditor(Collection.class));  
  24.         this.defaultEditors.put(Set.classnew CustomCollectionEditor(Set.class));  
  25.         this.defaultEditors.put(SortedSet.classnew CustomCollectionEditor(SortedSet.class));  
  26.         this.defaultEditors.put(List.classnew CustomCollectionEditor(List.class));  
  27.         this.defaultEditors.put(SortedMap.classnew CustomMapEditor(SortedMap.class));  
  28.         // Default editors for primitive arrays.   
  29.         this.defaultEditors.put(byte[].classnew ByteArrayPropertyEditor());  
  30.         this.defaultEditors.put(char[].classnew CharArrayPropertyEditor());  
  31.         // The JDK does not contain a default editor for char!   
  32.         this.defaultEditors.put(char.classnew CharacterEditor(false));  
  33.         this.defaultEditors.put(Character.classnew CharacterEditor(true));  
  34.         // Spring's CustomBooleanEditor accepts more flag values than the JDK's default editor.   
  35.         this.defaultEditors.put(boolean.classnew CustomBooleanEditor(false));  
  36.         this.defaultEditors.put(Boolean.classnew CustomBooleanEditor(true));  
  37.         // The JDK does not contain default editors for number wrapper types!   
  38.         // Override JDK primitive number editors with our own CustomNumberEditor.   
  39.         this.defaultEditors.put(byte.classnew CustomNumberEditor(Byte.classfalse));  
  40.         this.defaultEditors.put(Byte.classnew CustomNumberEditor(Byte.classtrue));  
  41.         this.defaultEditors.put(short.classnew CustomNumberEditor(Short.classfalse));  
  42.         this.defaultEditors.put(Short.classnew CustomNumberEditor(Short.classtrue));  
  43.         this.defaultEditors.put(int.classnew CustomNumberEditor(Integer.classfalse));  
  44.         this.defaultEditors.put(Integer.classnew CustomNumberEditor(Integer.classtrue));  
  45.         this.defaultEditors.put(long.classnew CustomNumberEditor(Long.classfalse));  
  46.         this.defaultEditors.put(Long.classnew CustomNumberEditor(Long.classtrue));  
  47.         this.defaultEditors.put(float.classnew CustomNumberEditor(Float.classfalse));  
  48.         this.defaultEditors.put(Float.classnew CustomNumberEditor(Float.classtrue));  
  49.         this.defaultEditors.put(double.classnew CustomNumberEditor(Double.classfalse));  
  50.         this.defaultEditors.put(Double.classnew CustomNumberEditor(Double.classtrue));  
  51.         this.defaultEditors.put(BigDecimal.classnew CustomNumberEditor(BigDecimal.classtrue));  
  52.         this.defaultEditors.put(BigInteger.classnew CustomNumberEditor(BigInteger.classtrue));  
  53.         // Only register config value editors if explicitly requested.   
  54.         if (this.configValueEditorsActive) {  
  55.             StringArrayPropertyEditor sae = new StringArrayPropertyEditor();  
  56.             this.defaultEditors.put(String[].class, sae);  
  57.             this.defaultEditors.put(short[].class, sae);  
  58.             this.defaultEditors.put(int[].class, sae);  
  59.             this.defaultEditors.put(long[].class, sae);  
  60.         }  
  61.     }  

/** * Actually register the default editors for this registry instance. */ private void doRegisterDefaultEditors() { this.defaultEditors = new HashMap<Class, PropertyEditor>(64); // Simple editors, without parameterization capabilities. // The JDK does not contain a default editor for any of these target types. this.defaultEditors.put(Charset.class, new CharsetEditor()); this.defaultEditors.put(Class.class, new ClassEditor()); this.defaultEditors.put(Class[].class, new ClassArrayEditor()); this.defaultEditors.put(Currency.class, new CurrencyEditor()); this.defaultEditors.put(File.class, new FileEditor()); this.defaultEditors.put(InputStream.class, new InputStreamEditor()); this.defaultEditors.put(Locale.class, new LocaleEditor()); this.defaultEditors.put(Pattern.class, new PatternEditor()); this.defaultEditors.put(Properties.class, new PropertiesEditor()); this.defaultEditors.put(Resource[].class, new ResourceArrayPropertyEditor()); this.defaultEditors.put(TimeZone.class, new TimeZoneEditor()); this.defaultEditors.put(URI.class, new URIEditor()); this.defaultEditors.put(URL.class, new URLEditor()); // Default instances of collection editors. // Can be overridden by registering custom instances of those as custom editors. this.defaultEditors.put(Collection.class, new CustomCollectionEditor(Collection.class)); this.defaultEditors.put(Set.class, new CustomCollectionEditor(Set.class)); this.defaultEditors.put(SortedSet.class, new CustomCollectionEditor(SortedSet.class)); this.defaultEditors.put(List.class, new CustomCollectionEditor(List.class)); this.defaultEditors.put(SortedMap.class, new CustomMapEditor(SortedMap.class)); // Default editors for primitive arrays. this.defaultEditors.put(byte[].class, new ByteArrayPropertyEditor()); this.defaultEditors.put(char[].class, new CharArrayPropertyEditor()); // The JDK does not contain a default editor for char! this.defaultEditors.put(char.class, new CharacterEditor(false)); this.defaultEditors.put(Character.class, new CharacterEditor(true)); // Spring's CustomBooleanEditor accepts more flag values than the JDK's default editor. this.defaultEditors.put(boolean.class, new CustomBooleanEditor(false)); this.defaultEditors.put(Boolean.class, new CustomBooleanEditor(true)); // The JDK does not contain default editors for number wrapper types! // Override JDK primitive number editors with our own CustomNumberEditor. this.defaultEditors.put(byte.class, new CustomNumberEditor(Byte.class, false)); this.defaultEditors.put(Byte.class, new CustomNumberEditor(Byte.class, true)); this.defaultEditors.put(short.class, new CustomNumberEditor(Short.class, false)); this.defaultEditors.put(Short.class, new CustomNumberEditor(Short.class, true)); this.defaultEditors.put(int.class, new CustomNumberEditor(Integer.class, false)); this.defaultEditors.put(Integer.class, new CustomNumberEditor(Integer.class, true)); this.defaultEditors.put(long.class, new CustomNumberEditor(Long.class, false)); this.defaultEditors.put(Long.class, new CustomNumberEditor(Long.class, true)); this.defaultEditors.put(float.class, new CustomNumberEditor(Float.class, false)); this.defaultEditors.put(Float.class, new CustomNumberEditor(Float.class, true)); this.defaultEditors.put(double.class, new CustomNumberEditor(Double.class, false)); this.defaultEditors.put(Double.class, new CustomNumberEditor(Double.class, true)); this.defaultEditors.put(BigDecimal.class, new CustomNumberEditor(BigDecimal.class, true)); this.defaultEditors.put(BigInteger.class, new CustomNumberEditor(BigInteger.class, true)); // Only register config value editors if explicitly requested. if (this.configValueEditorsActive) { StringArrayPropertyEditor sae = new StringArrayPropertyEditor(); this.defaultEditors.put(String[].class, sae); this.defaultEditors.put(short[].class, sae); this.defaultEditors.put(int[].class, sae); this.defaultEditors.put(long[].class, sae); } }  

 

 

1.基本數據類型

很簡單,該怎麼寫就怎麼寫.

controller代碼

  1. @RequestMapping  
  2.     public void test1(String name, Integer age, Double income, Boolean isMarried, String[] interests)  
  3.     {  
  4.         System.out.println("簡單數據類型綁定=========");  
  5.         System.out.println("名字:" + name);  
  6.         System.out.println("年齡:" + age);  
  7.         System.out.println("收入:" + income);  
  8.         System.out.println("已結婚:" + isMarried);  
  9.         System.out.println("興趣:");  
  10.         for (String interest : interests)  
  11.         {  
  12.             System.out.println(interest);  
  13.         }  
  14.         System.out.println("====================");  
  15.     }  

@RequestMapping public void test1(String name, Integer age, Double income, Boolean isMarried, String[] interests) { System.out.println("簡單數據類型綁定========="); System.out.println("名字:" + name); System.out.println("年齡:" + age); System.out.println("收入:" + income); System.out.println("已結婚:" + isMarried); System.out.println("興趣:"); for (String interest : interests) { System.out.println(interest); } System.out.println("===================="); } 

 

jsp代碼

  1. <form action="test1.do" method="post">  
  2.     <div class="f_left">姓名:</div>  
  3.     <div class="f_left"><input name="name" value="張三"/></div>  
  4.     <div class="clear"></div>  
  5.     <div class="f_left">年齡:</div>  
  6.     <div class="f_left"><input name="age" value="20"/></div>  
  7.     <div class="clear"></div>  
  8.     <div class="f_left">收入:</div>  
  9.     <div class="f_left"><input name="income" value="100000"/></div>  
  10.     <div class="clear"></div>  
  11.     <div class="f_left">結婚:</div>  
  12.     <div class="f_left">  
  13.     <input type="radio" name="isMarried" value="true" checked="checked"/>是  
  14.     <input type="radio" name="isMarried" value="false"/></div>  
  15.     <div class="clear"></div>  
  16.     <div class="f_left">興趣:</div>  
  17.     <div class="f_left">  
  18.     <input type="checkbox" name="interests" value="聽歌" checked="checked"/>聽歌  
  19.     <input type="checkbox" name="interests" value="書法" checked="checked"/>書法  
  20.     <input type="checkbox" name="interests" value="看電影" checked="checked"/>看電影  
  21.     </div>  
  22.     <div class="clear"></div>  
  23.     <div><input type="submit" value="提交表單"/></div>  
  24. </form>  

<form action="test1.do" method="post"> <div class="f_left">姓名:</div> <div class="f_left"><input name="name" value="張三"/></div> <div class="clear"></div> <div class="f_left">年齡:</div> <div class="f_left"><input name="age" value="20"/></div> <div class="clear"></div> <div class="f_left">收入:</div> <div class="f_left"><input name="income" value="100000"/></div> <div class="clear"></div> <div class="f_left">結婚:</div> <div class="f_left"> <input type="radio" name="isMarried" value="true" checked="checked"/>是 <input type="radio" name="isMarried" value="false"/>否</div> <div class="clear"></div> <div class="f_left">興趣:</div> <div class="f_left"> <input type="checkbox" name="interests" value="聽歌" checked="checked"/>聽歌 <input type="checkbox" name="interests" value="書法" checked="checked"/>書法 <input type="checkbox" name="interests" value="看電影" checked="checked"/>看電影 </div> <div class="clear"></div> <div><input type="submit" value="提交表單"/></div> </form> 

 

 

2.簡單對象類型

與基本類型相擬,只不過綁定到對象上更加簡潔.(類擬struts的ActionForm)

controller代碼

  1. @RequestMapping  
  2.     public void test2(User user)  
  3.     {  
  4.         System.out.println("簡單對象類型綁定=========");  
  5.         System.out.println("名字:" + user.getName());  
  6.         System.out.println("年齡:" + user.getAge());  
  7.         System.out.println("收入:" + user.getIncome());  
  8.         System.out.println("已結婚:" + user.getIsMarried());  
  9.         System.out.println("========================");  
  10.     }  

@RequestMapping public void test2(User user) { System.out.println("簡單對象類型綁定========="); System.out.println("名字:" + user.getName()); System.out.println("年齡:" + user.getAge()); System.out.println("收入:" + user.getIncome()); System.out.println("已結婚:" + user.getIsMarried()); System.out.println("========================"); } 

 

user代碼

  1. public class User {  
  2.     private String name;  
  3.     private Integer age;  
  4.     private Boolean isMarried;  
  5.     private Double income;  
  6.     private String[] interests;  
  7.       
  8.     public String getName() {  
  9.         return name;  
  10.     }  
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.     public Integer getAge() {  
  15.         return age;  
  16.     }  
  17.     public void setAge(Integer age) {  
  18.         this.age = age;  
  19.     }  
  20.     public Boolean getIsMarried() {  
  21.         return isMarried;  
  22.     }  
  23.     public void setIsMarried(Boolean isMarried) {  
  24.         this.isMarried = isMarried;  
  25.     }  
  26.     public Double getIncome() {  
  27.         return income;  
  28.     }  
  29.     public void setIncome(Double income) {  
  30.         this.income = income;  
  31.     }  
  32.     public String[] getInterests() {  
  33.         return interests;  
  34.     }  
  35.     public void setInterests(String[] interests) {  
  36.         this.interests = interests;  
  37.     }  
  38. }  

public class User { private String name; private Integer age; private Boolean isMarried; private Double income; private String[] interests; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Boolean getIsMarried() { return isMarried; } public void setIsMarried(Boolean isMarried) { this.isMarried = isMarried; } public Double getIncome() { return income; } public void setIncome(Double income) { this.income = income; } public String[] getInterests() { return interests; } public void setInterests(String[] interests) { this.interests = interests; } }  

 

jsp代碼

  1. <form action="test2.do" method="post">  
  2.         <div class="f_left">姓名:</div>  
  3.         <div class="f_left"><input name="name" value="lxf"/></div>  
  4.         <div class="clear"></div>  
  5.         <div class="f_left">年齡:</div>  
  6.         <div class="f_left"><input name="age" value="20"/></div>  
  7.         <div class="clear"></div>  
  8.         <div class="f_left">收入:</div>  
  9.         <div class="f_left"><input name="income" value="100000"/></div>  
  10.         <div class="clear"></div>  
  11.         <div class="f_left">結婚:</div>  
  12.         <div class="f_left">  
  13.         <input type="radio" name="isMarried" value="true" checked="checked"/>是  
  14.         <input type="radio" name="isMarried" value="false"/></div>  
  15.         <div class="clear"></div>  
  16.         <div class="f_left">興趣:</div>  
  17.         <div class="f_left">  
  18.         <input type="checkbox" name="interests" value="聽歌" checked="checked"/>聽歌  
  19.         <input type="checkbox" name="interests" value="書法" checked="checked"/>書法  
  20.         <input type="checkbox" name="interests" value="看電影" checked="checked"/>看電影  
  21.         </div>  
  22.         <div class="clear"></div>  
  23.         <div><input type="submit" value="提交表單"/></div>  
  24.     </form>  

<form action="test2.do" method="post"> <div class="f_left">姓名:</div> <div class="f_left"><input name="name" value="lxf"/></div> <div class="clear"></div> <div class="f_left">年齡:</div> <div class="f_left"><input name="age" value="20"/></div> <div class="clear"></div> <div class="f_left">收入:</div> <div class="f_left"><input name="income" value="100000"/></div> <div class="clear"></div> <div class="f_left">結婚:</div> <div class="f_left"> <input type="radio" name="isMarried" value="true" checked="checked"/>是 <input type="radio" name="isMarried" value="false"/>否</div> <div class="clear"></div> <div class="f_left">興趣:</div> <div class="f_left"> <input type="checkbox" name="interests" value="聽歌" checked="checked"/>聽歌 <input type="checkbox" name="interests" value="書法" checked="checked"/>書法 <input type="checkbox" name="interests" value="看電影" checked="checked"/>看電影 </div> <div class="clear"></div> <div><input type="submit" value="提交表單"/></div> </form> 

 

 

3.List類型綁定

網上很多人都給不出答案,關鍵在於,List需要綁定在對象(ActionForm),直接寫在request-mapping函數的參數是不行的,更重要的一點是要創建對象(ArrayList).

controller代碼

  1. @RequestMapping  
  2.     public void test3(Club club)  
  3.     {  
  4.         System.out.println("list類型綁定=========");  
  5.         System.out.println("會員:");  
  6.         for (User user : club.getUsers())  
  7.         {  
  8.             System.out.println(user.getName());  
  9.         }  
  10.         System.out.println("========================");  
  11.     }  

@RequestMapping public void test3(Club club) { System.out.println("list類型綁定========="); System.out.println("會員:"); for (User user : club.getUsers()) { System.out.println(user.getName()); } System.out.println("========================"); } 

 

Club代碼

  1. public class Club {  
  2.     private List<User> users = new ArrayList<User>();  
  3.       
  4.     public List<User> getUsers() {  
  5.         return users;  
  6.     }  
  7.       
  8.     public void setUsers(List<User> users) {  
  9.         this.users = users;  
  10.     }  
  11. }  

public class Club { private List<User> users = new ArrayList<User>(); public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } } 

 

jsp代碼

  1. <form action="test3.do" method="post">  
  2.         <div class="f_left">會員1號:</div>  
  3.         <div class="f_left">  
  4.         <input name="users[0].name" value="張三"/>  
  5.         </div>  
  6.         <div class="clear"></div>  
  7.         <div class="f_left">會員2號:</div>  
  8.         <div class="f_left">  
  9.         <input name="users[1].name" value="李四"/>  
  10.         </div>  
  11.         <div class="clear"></div>  
  12.         <div class="f_left">會員3號:</div>  
  13.         <div class="f_left">  
  14.         <input name="users[2].name" value="王五"/>  
  15.         </div>  
  16.         <div class="clear"></div>  
  17.         <div><input type="submit" value="提交表單"/></div>  
  18.     </form>  

<form action="test3.do" method="post"> <div class="f_left">會員1號:</div> <div class="f_left"> <input name="users[0].name" value="張三"/> </div> <div class="clear"></div> <div class="f_left">會員2號:</div> <div class="f_left"> <input name="users[1].name" value="李四"/> </div> <div class="clear"></div> <div class="f_left">會員3號:</div> <div class="f_left"> <input name="users[2].name" value="王五"/> </div> <div class="clear"></div> <div><input type="submit" value="提交表單"/></div> </form> 

 

 

4.Set類型綁定

與List類型相似,經測試表明,綁定Set數據時,必須先在Set對象中Add相應的數量的模型對象.

controller代碼

  1. @RequestMapping  
  2.     public void test4(Club2 club)  
  3.     {  
  4.         System.out.println("set類型綁定=========");  
  5.         System.out.println("會員:");  
  6.         for (User user : club.getUsers())  
  7.         {  
  8.             System.out.println(user.getName());  
  9.         }  
  10.         System.out.println("========================");  
  11.     }  

@RequestMapping public void test4(Club2 club) { System.out.println("set類型綁定========="); System.out.println("會員:"); for (User user : club.getUsers()) { System.out.println(user.getName()); } System.out.println("========================"); }
Club2代碼

 

 

  1. public class Club2 {  
  2.     private Set<User> users = new LinkedHashSet<User>();  
  3.       
  4.     public Club2() {  
  5.         users.add(new User());  
  6.         users.add(new User());  
  7.         users.add(new User());  
  8.     }  
  9.       
  10.     public Set<User> getUsers() {  
  11.         return users;  
  12.     }  
  13.     public void setUsers(Set<User> users) {  
  14.         this.users = users;  
  15.     }  
  16. }  

public class Club2 { private Set<User> users = new LinkedHashSet<User>(); public Club2() { users.add(new User()); users.add(new User()); users.add(new User()); } public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } } 

 

 

jsp代碼

  1. <form action="test4.do" method="post">  
  2.         <div class="f_left">會員1號:</div>  
  3.         <div class="f_left">  
  4.         <input name="users[0].name" value="張三"/>  
  5.         </div>  
  6.         <div class="clear"></div>  
  7.         <div class="f_left">會員2號:</div>  
  8.         <div class="f_left">  
  9.         <input name="users[1].name" value="李四"/>  
  10.         </div>  
  11.         <div class="clear"></div>  
  12.         <div class="f_left">會員3號:</div>  
  13.         <div class="f_left">  
  14.         <input name="users[2].name" value="王五"/>  
  15.         </div>  
  16.         <div class="clear"></div>  
  17.         <div><input type="submit" value="提交表單"/></div>  
  18.     </form>  

<form action="test4.do" method="post"> <div class="f_left">會員1號:</div> <div class="f_left"> <input name="users[0].name" value="張三"/> </div> <div class="clear"></div> <div class="f_left">會員2號:</div> <div class="f_left"> <input name="users[1].name" value="李四"/> </div> <div class="clear"></div> <div class="f_left">會員3號:</div> <div class="f_left"> <input name="users[2].name" value="王五"/> </div> <div class="clear"></div> <div><input type="submit" value="提交表單"/></div> </form> 

 

 

5.Map類型綁定

最靈活的一種方式,可無限綁定未定義的參數,注意必須綁定在對象下(ActionForm).

controller代碼

  1. @RequestMapping  
  2.     public void test5(UserForm userForm)  
  3.     {  
  4.         System.out.println("Map類型綁定=========");  
  5.         System.out.println("名字:" + userForm.getUser().get("name"));  
  6.         System.out.println("年齡:" + userForm.getUser().get("age"));  
  7.         System.out.println("收入:" + userForm.getUser().get("income"));  
  8.         System.out.println("已結婚:" + userForm.getUser().get("isMarried"));  
  9.         System.out.println("========================");  
  10.     }  

@RequestMapping public void test5(UserForm userForm) { System.out.println("Map類型綁定========="); System.out.println("名字:" + userForm.getUser().get("name")); System.out.println("年齡:" + userForm.getUser().get("age")); System.out.println("收入:" + userForm.getUser().get("income")); System.out.println("已結婚:" + userForm.getUser().get("isMarried")); System.out.println("========================"); } 

 

UserForm.java代碼

  1. public class UserForm {  
  2.     private Map<String, String> userMap = new LinkedHashMap<String, String>();  
  3.     private User user = new User();  
  4.       
  5.     public Map<String, String> getUserMap() {  
  6.         return userMap;  
  7.     }  
  8.     public void setUserMap(Map<String, String> userMap) {  
  9.         this.userMap = userMap;  
  10.     }  
  11.     public User getUser() {  
  12.         return user;  
  13.     }  
  14.     public void setUser(User user) {  
  15.         this.user = user;  
  16.     }  
  17.       
  18. }  

public class UserForm { private Map<String, String> userMap = new LinkedHashMap<String, String>(); private User user = new User(); public Map<String, String> getUserMap() { return userMap; } public void setUserMap(Map<String, String> userMap) { this.userMap = userMap; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } 

 

jsp代碼

  1. <form action="test5.do" method="post">  
  2.         <div class="f_left">姓名:</div>  
  3.         <div class="f_left"><input name="user['name']" value="張三"/></div>  
  4.         <div class="clear"></div>  
  5.         <div class="f_left">年齡:</div>  
  6.         <div class="f_left"><input name="user['age']" value="20"/></div>  
  7.         <div class="clear"></div>  
  8.         <div class="f_left">收入:</div>  
  9.         <div class="f_left"><input name="user['income']" value="100000"/></div>  
  10.         <div class="clear"></div>  
  11.         <div class="f_left">結婚:</div>  
  12.         <div class="f_left">  
  13.         <input type="radio" name="user['isMarried']" value="true" checked="checked"/>是  
  14.         <input type="radio" name="user['isMarried']" value="false"/></div>  
  15.         <div class="clear"></div>  
  16.         <div><input type="submit" value="提交表單"/></div>  
  17.     </form>  

<form action="test5.do" method="post"> <div class="f_left">姓名:</div> <div class="f_left"><input name="user['name']" value="張三"/></div> <div class="clear"></div> <div class="f_left">年齡:</div> <div class="f_left"><input name="user['age']" value="20"/></div> <div class="clear"></div> <div class="f_left">收入:</div> <div class="f_left"><input name="user['income']" value="100000"/></div> <div class="clear"></div> <div class="f_left">結婚:</div> <div class="f_left"> <input type="radio" name="user['isMarried']" value="true" checked="checked"/>是 <input type="radio" name="user['isMarried']" value="false"/>否</div> <div class="clear"></div> <div><input type="submit" value="提交表單"/></div> </form> 

 

 

6.複合類型綁定

controller代碼

  1. @RequestMapping  
  2.     public void test6(UserForm userForm)  
  3.     {  
  4.         System.out.println("複合類型綁定=========");  
  5.         System.out.println("名字:" + userForm.getUser().getName());  
  6.         System.out.println("年齡:" + userForm.getUser().getAge());  
  7.         System.out.println("收入:" + userForm.getUser().getIncome());  
  8.         System.out.println("已結婚:" + userForm.getUser().getIsMarried());  
  9.         System.out.println("========================");  
  10.     }  

@RequestMapping public void test6(UserForm userForm) { System.out.println("複合類型綁定========="); System.out.println("名字:" + userForm.getUser().getName()); System.out.println("年齡:" + userForm.getUser().getAge()); System.out.println("收入:" + userForm.getUser().getIncome()); System.out.println("已結婚:" + userForm.getUser().getIsMarried()); System.out.println("========================"); } 

 

UserForm代碼

  1. public class UserForm {  
  2.     private Map<String, String> userMap = new LinkedHashMap<String, String>();  
  3.     private User user = new User();  
  4.       
  5.     public Map<String, String> getUserMap() {  
  6.         return userMap;  
  7.     }  
  8.     public void setUserMap(Map<String, String> userMap) {  
  9.         this.userMap = userMap;  
  10.     }  
  11.     public User getUser() {  
  12.         return user;  
  13.     }  
  14.     public void setUser(User user) {  
  15.         this.user = user;  
  16.     }  
  17.       
  18. }  

public class UserForm { private Map<String, String> userMap = new LinkedHashMap<String, String>(); private User user = new User(); public Map<String, String> getUserMap() { return userMap; } public void setUserMap(Map<String, String> userMap) { this.userMap = userMap; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } 

 

jsp代碼

  1. <form action="test6.do" method="post">  
  2.     <div class="f_left">姓名:</div>  
  3.     <div class="f_left"><input name="user.name" value="張三"/></div>  
  4.     <div class="clear"></div>  
  5.     <div class="f_left">年齡:</div>  
  6.     <div class="f_left"><input name="user.age" value="20"/></div>  
  7.     <div class="clear"></div>  
  8.     <div class="f_left">收入:</div>  
  9.     <div class="f_left"><input name="user.income" value="100000"/></div>  
  10.     <div class="clear"></div>  
  11.     <div class="f_left">結婚:</div>  
  12.     <div class="f_left">  
  13.     <input type="radio" name="user.isMarried" value="true" checked="checked"/>是  
  14.     <input type="radio" name="user.isMarried" value="false"/></div>  
  15.     <div class="clear"></div>  
  16.     <div><input type="submit" value="提交表單"/></div>  
  17. </form>  

<form action="test6.do" method="post"> <div class="f_left">姓名:</div> <div class="f_left"><input name="user.name" value="張三"/></div> <div class="clear"></div> <div class="f_left">年齡:</div> <div class="f_left"><input name="user.age" value="20"/></div> <div class="clear"></div> <div class="f_left">收入:</div> <div class="f_left"><input name="user.income" value="100000"/></div> <div class="clear"></div> <div class="f_left">結婚:</div> <div class="f_left"> <input type="radio" name="user.isMarried" value="true" checked="checked"/>是 <input type="radio" name="user.isMarried" value="false"/>否</div> <div class="clear"></div> <div><input type="submit" value="提交表單"/></div> </form> 

 轉自 http://blog.csdn.net/lxf9601/article/details/5925810

發佈了0 篇原創文章 · 獲贊 104 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章