2

編集可能なテーブルと送信ボタンを使用してフォームを作成しました。

            @Override
            protected void populateItem(final Item<Game> listItem) {
                final Game game = listItem.getModelObject();
                listItem.setModel(new CompoundPropertyModel<Game>(game));
                listItem.add(new TextField("players", Model.of(game.getPlayerResult().getPlayer().getName() + ":"
                        + game.getOpponent().getPlayer().getName())));
                listItem.add(new TextField("leftSide", Model.of(game.getResult().getLeftSide())));
                listItem.add(new TextField("rightSide", Model.of(game.getResult().getRightSide())));
                listItem.add(new CheckBox("overtime", Model.of(game.getResult().getOvertime())));

            }

今、挿入した新しい値を保存したいのですが、呼び出すと:

       add(new Button("submit") {

            private static final long serialVersionUID = 1L;

            @Override
            public void onSubmit() {

                Iterator<Item<Game>> a = dataView.getItems();
                while (a.hasNext()) {
                    Game game = a.next().getModelObject();     
                        System.out.println(game.getPlayerResult().getPlayer().getName());
                }
                setResponsePage(new SchedulePage(tournament, table));
            }
        });

まだ古い値を出力します。では、どうすれば新しい値のテーブルを取得できますか?

4

1 に答える 1

2

あなたがそれをしている方法では、テキストフィールドはあなたのドメインオブジェクトに値を書き戻すことができません。

モデルについて学び、適切なモデルを使用します。

listItem.add(new TextField("rightSide", new PropertyModel(game, "result.rightSide")));

他にも多くのオプションがあります。たとえば、safemodelです。

于 2012-08-20T20:21:43.333 に答える