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