【发布时间】:2013-10-16 16:14:43
【问题描述】:
我目前正在努力开发 wicket 并开发了一个小型演示应用程序。现在我想在该应用程序中显示一个静态图像(更具体地说,应该将此图像添加到面板中,然后将其添加到主页中)。
这是我目前所拥有的:
1) 应该保存图像的面板的 HTML 代码。没有特定的检票口代码,它应该只包含项目结构中存在的图像。
<html><body>
<wicket:panel>
Just some static text inside the image panel...<br/>
<img src="test.jpg"></img>
</wicket:panel>
</body></html>
面板名为 ImagePanel,所有三个文件(ImagePanel.java、ImagePanel.html、test.jpg)都位于同一个包中。
2) ImagePanel 的 Java 代码 - 相当短,因为没有什么可做的:
public class ImagePanel extends Panel {
public ImagePanel(String id) {
super(id);
}
}
3) 主页的 HTML 代码:
<html><body>
<div wicket:id="dynamicComponent"></div>
</body></html>
4) 以及首页的Java代码:
public HomePage() {
add(new ImagePanel("dynamicComponent"));
}
请注意以下几点:实际上,HomePage.java 和 ImagePanel.java 位于不同的 OSGi 项目中。此处简化了 HomePage 的代码,实际上 ImagePanel 是通过服务定位并动态添加的。 到目前为止有效,我看到了静态文本。但是图像没有加载,我只是得到这个损坏的图像缩略图。
就像我说的,所有三个与 ImagePanel 相关的文件(.java、.html、图片)都位于同一个包中。我可以从主页项目访问面板本身,因为我可以看到静态文本。但我无法显示图像。
我使用的应用服务器是 Jetty,从包含主页的项目内部启动。
更新: 我已将问题缩小到以下几点: 只要我只在 ImagePanel.html 中显示静态文本,一切正常。只要我想添加图像(即使在下面建议的 wicket:link-tag 中),我最终会遇到以下异常:
[qtp401543768-20] WARN org.apache.wicket.core.util.lang.WicketObjects - Could not resolve class [plugin.ImagePanel]
java.lang.ClassNotFoundException: plugin.ImagePanel
因此,如果没有图像,服务器包能够从 gui 包中加载类并显示静态文本。有了这张图片,我最终得到了同一个类的 ClassNotFoundException。
在此处查找整个堆栈跟踪:stack trace
【问题讨论】:
标签: wicket