如何绑定JSP中的动态字段列表

时间:2012-08-25 15:51:34

标签: spring model-view-controller jsp

我正在构建一个用于输入足球比赛结果的JSP页面。我得到一份未结算的游戏列表,我想列出这样的:

team1 vs team4 
    [hidden field: game id]  
    [input field for home goals]  
    [input field for away goals]

team2 vs team5 
    [hidden field: game id]  
    [input field for home goals]
    [input field for away goals]

我永远不知道将列出多少游戏。我试图弄清楚如何设置绑定,以便控制器可以在提交表单后访问这些字段。

有人可以指导我朝正确的方向发展。我正在使用Spring MVC 3.1

1 个答案:

答案 0 :(得分:4)

Spring可以bind indexed properties,因此您需要在命令中创建游戏信息对象列表,例如:

public class Command {
   private List<Game> games = new ArrayList<Game>();
   // setter, getter
}

public class Game {
   private int id;
   private int awayGoals;
   private int homeGoals;
   // setters, getters
}

在您的控制器中:

@RequestMapping(value = "/test", method = RequestMethod.POST)
public String test(@ModelAttribute Command cmd) {
   // cmd.getGames() ....
   return "...";
}

在JSP中,您必须设置输入的路径,如:

games[0].id
games[0].awayGoals
games[0].homeGoals 

games[1].id
games[1].awayGoals
games[1].homeGoals 

games[2].id
games[2].awayGoals
games[2].homeGoals 
....

如果我没有弄错,在Spring 3中auto-growing collections现在是绑定列表的默认行为,但对于较低版本,您必须使用AutoPopulatingList而不是仅使用ArrayList(就像参考:Spring MVC and handling dynamic form data: The AutoPopulatingList)。