Grails 3 - 获取服务中的资产路径

Grails 3 - get asset path in service

我需要在 Grails 3 服务中获取位于 assets/schemas/resource.json 中的静态资源的路径。

目前定义为

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

这适用于 development 环境,但当然不适用于生产环境(因为它位于 <app_root>/assets/resource.json.

我试图搜索如何在我的案例中利用资产管道,但到现在为止我真的不知道:P

提前致谢!

它包含在文档中。 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

returns

groovy.lang.MissingPropertyException: No such property: byteArray for class: 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