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

时间:2016-04-06 17:10:20

标签: grails asset-pipeline grails-3.0 grails-services

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

目前定义为

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

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

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

提前致谢!

3 个答案:

答案 0 :(得分:5)

它在本地运行,但在部署到服务器时则不行。使用Grails 3.1.0,Java 1.8.0_91和Tomcat 8.0.33。

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

返回

  

groovy.lang.MissingPropertyException:没有这样的属性:class的byteArray:org.springframework.web.context.support.ServletContextResource

编辑:解决了它:

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

答案 1 :(得分:1)

文档中介绍了它。 http://bertramdev.github.io/grails-asset-pipeline/guide/usage.html

在控制器或服务中,注入assetResourceLocator并使用assetResourceLocator.findAssetForURI()

答案 2 :(得分:0)

完整示例:

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