2

DefaultDataTable の行項目をオーバーライドして、onClick の動作を追加しました。

        @Override
        protected Item newRowItem(String id, int index, IModel model) {
             //return super.newRowItem(id, index, model);
            final Item<SearchResult> rowItem = super.newRowItem(id, index,model);
            rowItem.add(new AjaxEventBehavior ("onclick") {
               @Override
               protected void onEvent(AjaxRequestTarget target){
                  WebMarkupContainer wmc = new WebMarkupContainer("myTest");
                  target.add(wmc); //this doesn't work
                  add(wmc); //works but only when I refresh the page
               }
            });
            return rowItem;
        }

        <object wicket:id="myTest" data="" border="1" width="100%" height="600px"></object>

クリックが発生したら、オブジェクトのデータを更新してオブジェクトをリロードしたいと思います。オブジェクトは Pdf ファイルです。ターゲットを使用すると、PDF がリロードされないようです。設定しました

         wmc.setOutputMarkupId(true);

しかし、それは役に立たないようです。

ユーザーがページを更新する必要がないようにするにはどうすればよいですか???

Wicket と Ajax を使い始めたばかりなので初心者です。

4

1 に答える 1

7

新しいコンテナを作成するのではなく、元のコンテナをAjaxRequestTargetに追加する必要があります。コンポーネントがAJAXを介して再描画されたときに値が実際に更新されるように、コンテナーが動的モデルを使用していることを確認してください。

于 2012-08-23T10:00:41.697 に答える