无法使用grails渲染插件

时间:2015-07-10 15:48:04

标签: grails plugins pdf-generation rendering asset-pipeline

我有一个使用渲染1.0.0插件和资产管道的grails 2.4.3应用程序:1.9.9。我可以从GSP成功生成PDF,但

  • 没有样式,所以看起来像垃圾
  • GSP中的每个CSS引用都会导致java.io.IOException: Stream closed显示在日志中

当我注释掉所有CSS引用时,没有错误,但它仍然看起来像垃圾。我认为stream closed问题是由于XHTML解析器无法加载CSS文件。 CSS引用看起来像这样

<link rel="stylesheet" href="/Invoicer/assets/invoicer.css?compile=false"  />

当我在浏览器中加载该URL时,会成功返回并显示CSS文件。

我也使用Spring Security,并认为这可能是身份验证问题。我删除了Config.groovy中的所有过滤器,因此它看起来像这样

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    '/**':                          ['permitAll']
]

但这没有帮助。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

重新阅读文档后,我注意到了这一点:

  

渲染引擎解析相对于的所有相对链接   grails.serverURL配置属性。

我认为serverURL会自动设定,但事实并非如此。我设置了

grails.serverURL = "http://localhost:9090/${appName}"

在Config.groovy 以及

grails.server.port.http = 9090

BuildConfig.groovy中的

。它似乎也没有调用它们的布局引擎,所以我不得不手动拉入CSS文件:

<asset:stylesheet src="invoicer.css" />

答案 1 :(得分:0)

这是一个答案,但它很难看。我注意到指定CSS的完整路径确实有效:

<link rel="stylesheet" href="http://localhost:9090/Invoicer/assets/bootstrap.css?compile=false" />

现在,由于我使用资产管道,我必须在资产管道中使用Config.groovy中的绝对URL:

grails.assets.url = "http://localhost:9090/Invoicer/assets/"

不漂亮,但现在可以使用。