2

我已经覆盖了我的 DefaultDataTable 中的 rowitem 以添加一些 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 回答