Grails 3 - получить путь активов в обслуживании

Мне нужно получить путь статического ресурса, расположенного в assets/schemas/resource.json в сервисе Grails 3.

На данный момент это определяется как

private final String SCHEMA = 'grails-app/assets/schemas/resource.json',

что хорошо для development окружающей среды, но, конечно, не для производства (как это было бы в <app_root>/assets/resource.json,

Я пытался найти способ использования Asset Pipeline в моем случае, но до сих пор я понятия не имел:P

Заранее спасибо!

3 ответа

Решение

Это покрыто в документах. http://bertramdev.github.io/grails-asset-pipeline/guide/usage.html

В контроллере или сервисе введите assetResourceLocator и использовать assetResourceLocator.findAssetForURI()

Он работает локально, но не при развертывании на сервере. Использование Grails 3.1.0, Java 1.8.0_91 и Tomcat 8.0.33.

assetResourceLocator?.findAssetForURI('myFolder/placeholder.jpg')?.byteArray

возвращается

groovy.lang.MissingPropertyException: такого свойства нет: byteArray для класса: org.springframework.web.context.support.ServletContextResource

РЕДАКТИРОВАТЬ: Решено это:

assetResourceLocator?.findAssetForURI('myFolder/placeholder.jpg')?.getInputStream()?.bytes

Полный пример:

class ExampleService {
  def assetResourceLocator

  def someMethod() {
    Resource res = assetResourceLocator.findAssetForURI('test.css')
    String url = res.getURL()
    String uri = res.getURI()
  }
}

Источник: http://bertramdev.github.io/grails-asset-pipeline/guide/usage.html

Другие вопросы по тегам