калитка; изображения из файловой системы. Я добавил папку ресурсов, и все еще работает - PullRequest
0 голосов
/ 04 мая 2018

Я хочу добавить папку ресурсов из файловой системы для хранения изображений и их отображения. Я добавил папку в приложении, и все еще работает.

WicketTestApplication # INIT

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 голосов
/ 04 мая 2018

WebApplicationPath - это IResourceFinder, который будет искать ресурсы в пути к веб-приложению, кроме папки 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/

...