【问题标题】:Unable to load CSS using grails rendering plugin无法使用 grails 渲染插件加载 CSS
【发布时间】:2015-07-10 15:48:04
【问题描述】:

我有一个使用渲染 1.0.0 插件和资产管道:1.9.9 的 grails 2.4.3 应用程序。我可以从 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']
]

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    在 Config.groovy 以及

    grails.server.port.http = 9090

    在 BuildConfig.groovy 中。他们的布局引擎似乎也没有被调用,所以我不得不手动拉入 CSS 文件:

    &lt;asset:stylesheet src="invoicer.css" /&gt;

    【讨论】:

      【解决方案2】:

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

      &lt;link rel="stylesheet" href="http://localhost:9090/Invoicer/assets/bootstrap.css?compile=false" /&gt;

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-15
        • 2017-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-31
        • 2017-08-09
        相关资源
        最近更新 更多