便门;来自文件系统的图像。我添加了资源文件夹,并且仍在工作
wicket; images from file system. I added resourse folder, and still working
我想要的是从文件系统添加资源文件夹来存储图像和显示它们。我在应用程序中添加了该文件夹,并且仍在工作。
WicketTestApplication#init
getResourceSettings().getResourceFinders().add( new WebApplicationPath( getServletContext(), "C:\image" ) );
和测试页
public class TestPage extends WebPage {
private static final long serialVersionUID = 1L;
public TestPage() {
add( new ContextImage( "image", "C:/image/rhodes.jpg" ) );
}
}
我错过了什么吗?
WebApplicationPath
是一个 IResourceFinder
,它将在 Web 应用程序路径中查找资源,WEB-INF/
文件夹除外。所以你不能用它从你的文件系统加载一些东西。
我建议您改用 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/
我想要的是从文件系统添加资源文件夹来存储图像和显示它们。我在应用程序中添加了该文件夹,并且仍在工作。
WicketTestApplication#init
getResourceSettings().getResourceFinders().add( new WebApplicationPath( getServletContext(), "C:\image" ) );
和测试页
public class TestPage extends WebPage {
private static final long serialVersionUID = 1L;
public TestPage() {
add( new ContextImage( "image", "C:/image/rhodes.jpg" ) );
}
}
我错过了什么吗?
WebApplicationPath
是一个 IResourceFinder
,它将在 Web 应用程序路径中查找资源,WEB-INF/
文件夹除外。所以你不能用它从你的文件系统加载一些东西。
我建议您改用 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/