我正在构建一个用于输入足球比赛结果的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
答案 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)。