Wicket ajax更新组件行为?

时间:2012-08-23 09:55:50

标签: ajax wicket

我已经从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,所以我是初学者。

1 个答案:

答案 0 :(得分:7)

您应该将原始容器添加到AjaxRequestTarget,而不是创建新容器。确保容器使用动态模型,以便在通过AJAX重新绘制组件时实际更新该值。