我已经从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,所以我是初学者。
答案 0 :(得分:7)
您应该将原始容器添加到AjaxRequestTarget,而不是创建新容器。确保容器使用动态模型,以便在通过AJAX重新绘制组件时实际更新该值。