springmvc前后台数据绑定中Set的处理

Cavalier 发布于 2013/02/22 15:59
阅读 2K+
收藏 0

在项目开发中,遇到了一个奇怪的问题  关于实体中Set的问题 在网上找了下,是这么说的 

Set和List类似,也需要绑定在对象上,而不能直接写在Controller方法的参数中。但是,绑定Set数据时,必须先在Set对象中add相应的数量的模型对象。
    Model代码:
  1. public class User { 
  2.  
  3.     private String firstName; 
  4.  
  5.     private String lastName; 
  6.  
  7.     public String getFirstName() { 
  8.         return firstName; 
  9.     } 
  10.  
  11.     public void setFirstName(String firstName) { 
  12.         this.firstName = firstName; 
  13.     } 
  14.  
  15.     public String getLastName() { 
  16.         return lastName; 
  17.     } 
  18.  
  19.     public void setLastName(String lastName) { 
  20.         this.lastName = lastName; 
  21.     } 
  22.  
  23.  
  24. public class UserSetForm { 
  25.  
  26.     private Set<User> users = new HashSet<User>(); 
  27.      
  28.     public UserSetForm(){ 
  29.         users.add(new User()); 
  30.         users.add(new User()); 
  31.         users.add(new User()); 
  32.     } 
  33.  
  34.     public Set<User> getUsers() { 
  35.         return users; 
  36.     } 
  37.  
  38.     public void setUsers(Set<User> users) { 
  39.         this.users = users; 
  40.     } 
  41.  


    Controller代码:

  1. @RequestMapping("test.do"
  2. public void test(UserSetForm userForm) { 
  3.     for (User user : userForm.getUsers()) { 
  4.         System.out.println(user.getFirstName() + " - " + user.getLastName()); 
  5.     } 


    JSP表单代码:

  1. <form action="test.do" method="post"
  2.    <table> 
  3.       <thead> 
  4.          <tr> 
  5.             <th>First Name</th> 
  6.             <th>Last Name</th> 
  7.          </tr> 
  8.       </thead> 
  9.       <tfoot> 
  10.          <tr> 
  11.             <td colspan="2"><input type="submit" value="Save" /></td> 
  12.          </tr> 
  13.       </tfoot> 
  14.       <tbody> 
  15.          <tr> 
  16.             <td><input name="users[0].firstName" value="aaa" /></td> 
  17.             <td><input name="users[0].lastName" value="bbb" /></td> 
  18.          </tr> 
  19.          <tr> 
  20.             <td><input name="users[1].firstName" value="ccc" /></td> 
  21.             <td><input name="users[1].lastName" value="ddd" /></td> 
  22.          </tr> 
  23.          <tr> 
  24.             <td><input name="users[2].firstName" value="eee" /></td> 
  25.             <td><input name="users[2].lastName" value="fff" /></td> 
  26.          </tr> 
  27.       </tbody> 
  28.    </table> 
  29. </form> 

这样的话  需要对前后台数据进行绑定,这样的例子是没问题的但是看这段代码

  • public class UserSetForm { 
  •  
  •     private Set<User> users = new HashSet<User>(); 
  •      
  •     public UserSetForm(){ 
  •         users.add(new User()); 
  •         users.add(new User()); 
  •         users.add(new User()); 
  •     } 
  • 我想知道的是  在不知道user个数的前提下,怎么进行Set的绑定?

    加载中
    0
    高得顺
    高得顺
  •   public UserSetForm(){ 
  •         users.add(new User()); 
  •         users.add(new User()); 
  •         users.add(new User()); 
  •     } 
    这段不写应该没问题的
  • 0
    Cavalier
    Cavalier

    引用来自“高得顺”的答案

  •   public UserSetForm(){ 
  •         users.add(new User()); 
  •         users.add(new User()); 
  •         users.add(new User()); 
  •     } 
    这段不写应该没问题的
  • 这样不写前台根本就得不到

    0
    高得顺
    高得顺
    http://www.iteye.com/topic/1123319  看下这个
    0
    高得顺
    高得顺
    @红薯  这里的css被污染了...
    返回顶部
    顶部