我有一个使用渲染1.0.0插件和资产管道的grails 2.4.3应用程序:1.9.9。我可以从GSP成功生成PDF,但
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']
]
但这没有帮助。有任何想法吗?谢谢!
答案 0 :(得分:2)
重新阅读文档后,我注意到了这一点:
渲染引擎解析相对于的所有相对链接 grails.serverURL配置属性。
我认为serverURL
会自动设定,但事实并非如此。我设置了
grails.serverURL = "http://localhost:9090/${appName}"
在Config.groovy 以及
中 grails.server.port.http = 9090
。它似乎也没有调用它们的布局引擎,所以我不得不手动拉入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/"
不漂亮,但现在可以使用。