0

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

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

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

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

面板非常简单:

<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 动态添加的,它就会上升。

有什么线索吗?

谢谢

4

1 回答 1

0

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

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

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

编辑:

其他可能的问题:

  • 您是否将该项目添加到 ajax 调用的 AjaxRequestTarget 中?
  • 您是否在父项上调用了 addOrReplace() ?
于 2018-03-13T14:39:54.517 回答