我想要的是从文件系统添加资源文件夹以存储图像并显示它们。我在应用程序中添加了该文件夹,但仍在使用。
WicketTestApplication#初始化
getResourceSettings().getResourceFinders().add( new WebApplicationPath( getServletContext(), "C:\\image" ) );
和TestPage
public class TestPage extends WebPage {
private static final long serialVersionUID = 1L;
public TestPage() {
add( new ContextImage( "image", "C:/image/rhodes.jpg" ) );
}
}
我错过了什么吗?
答案 0 :(得分:2)
WebApplicationPath
是IResourceFinder
,它将在WEB-INF/
文件夹中查找Web应用程序路径中的资源。因此,您无法使用它来加载文件系统中的内容。
我建议您改为使用FileSystemResource[Reference]
或DynamicImageResource
专业化。
private static class ImageResource extends DynamicImageResource {
@Override
protected byte[] getImageData(Attributes attributes) {
PageParameters parameters = attributes.getParameters();
StringValue name = parameters.get("name");
byte[] imageBytes = null;
if (name.isEmpty() == false) {
imageBytes = getImageAsBytes(name.toString());
}
return imageBytes;
}
private byte[] getImageAsBytes(String imageName) {
// read the image from the file system, e.g. with FileInputStream(folder, imageName);
}
@Override
public boolean equals(Object that) {
return that instanceof ImageResource;
}
}
可以在以下网址找到解释此方法的文章:http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/