Доступ к публичным ресурсам с помощью Java в Play Framework - PullRequest
0 голосов
/ 21 ноября 2018

Возможно ли получить доступ к Assets внутри Java-кода в Play Framework?Как?

Мы получаем доступ к ресурсам из шаблонов scala HTML следующим образом:

<img src="@routes.Assets.versioned("images/myimage.png")" width="800" />

Но я не смог найти ни документации, ни примера кода, чтобы сделать это из кода Java.Я только что нашел класс controllers.Assets, но неясно, как его использовать.Если это тот класс, который нужно использовать, возможно, его нужно ввести?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Наконец-то я нашел способ доступа к общей папке даже из приложения производственного режима.Чтобы быть доступными / скопированными в распределенной версии, необходимо сопоставить общую папку в build.sbt:

import NativePackagerHelper._
mappings in Universal ++= directory("public")

Затем файлы будут доступны в общей папке в распределенном приложении в производственной форме.код Java:

  private static final String PUBLIC_IMAGE_DIRECTORY_RELATIVE_PATH = "public/images/";

  static File getImageAsset(String relativePath) throws ResourceNotFoundException {
     final String path = PUBLIC_IMAGE_DIRECTORY_RELATIVE_PATH + relativePath;
     final File file = new File(path);
     if (!file.exists()) {
       throw new ResourceNotFoundException(String.format("Asset %s not found", path));
     }
     return file;
  }

Этот пост помог мне найти правильное решение: https://groups.google.com/forum/#!topic/play-framework/sVDoEtAzP-U

0 голосов
/ 21 ноября 2018

Обычно ресурсы находятся в папке "public", и я не знаю, как вы хотите использовать свое изображение, поэтому я использовал ImageIO.

File file = new File("./public/images/nice.png");
boolean exists = file.exists();
String absolutePath = file.getAbsolutePath();
try {
    ImageInputStream input = ImageIO.read(file); //Use it
} catch (IOException e) {
    e.printStackTrace();
}

System.out.println("EX = "+exists+" - "+absolutePath);
...