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

时间:2018-05-04 03:50:58

标签: image resources wicket

我想要的是从文件系统添加资源文件夹以存储图像并显示它们。我在应用程序中添加了该文件夹,但仍在使用。

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" ) );  
  }
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

WebApplicationPathIResourceFinder,它将在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/