便门;来自文件系统的图像。我添加了资源文件夹,并且仍在工作

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/