Wicket - 使用ContextRelativeResource的图像

时间:2013-04-29 15:56:37

标签: image wicket

我对Image和ContextRelativeResource有一个简单的问题。

我有一个DataTable和一个覆盖了popupateItem的单元格:

item.add(new ImgPanel(componentId, new ContextRelativeResource("img/erogata.png"))); 

DataTabe使用SPAN标记渲染单元格,因此我无法直接添加图像,因此我必须使用Panel。

小组非常简单:

<wicket:panel>
   <img wicket:id="status" />
</wicket:panel>

使用此构造函数:

public ImgPanel(String id, ContextRelativeResource resource) {
   super(id);
   add(new Image("status", resource));
}

图像正确显示但Wicket发出关于未找到组件“状态”的警告:

Could not find component 'sintTable:table:body:rows:1:cells:9:cell:status' on page

注意:通过Ajax调用更新组件时会引发此问题。如果使用页面呈现组件,则没有例外。如果组件是由Ajax以dinamically方式添加的,那么它就会升级。

任何线索?

由于

1 个答案:

答案 0 :(得分:0)

不要在构造函数中添加Image,而是将其添加到onInitialize()中。这样,当ajax调用初始化所有子项时,它将被刷新。

public ImgPanel(String id, ContextRelativeResource resource) {
   super(id);
}

@Override
protected void onInitialize() {
   add(new Image("status", resource));
}

修改

其他可能的问题:

  • 您是否已将该项添加到ajax调用的AjaxRequestTarget中?
  • 您是否在父项目上调用了addOrReplace()?