4

サッカーの試合結果を入力するための 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 を使用しています

4

1 に答える 1

4

Spring は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 では、自動拡張コレクションがバインディング リストのデフォルトの動作になりましたが、それ以前のバージョンでは、単なる ArrayList の代わりにAutoPopulatingListを使用する必要がありました (参照として: Spring MVC と動的な処理フォーム データ: AutoPopulatingList )。

于 2012-08-25T21:20:03.350 に答える