【问题标题】:Grails interprets and closes HTML meta tagGrails 解释和关闭 HTML 元标记
【发布时间】:2010-12-26 08:04:09
【问题描述】:

在我的 Grails GSP 文件中,我使用的是 HTML 元标记:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

问题在于 Grails 关闭了这个标签并将其呈现为:

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>

这无法通过 W3C 的 HTML 验证(因为我的文档类型是 HTML 而不是 XHTML)。 有解决办法吗?我怎样才能让 Grails 不解释 元标记?

我正在使用 grails-1.2-M4。

跟进: 我为此问题创建了 Grails 错误 GRAILS-5696

【问题讨论】:

    标签: grails gsp


    【解决方案1】:

    不确定这是不是最漂亮的解决方案,但至少它适用于您的情况:

    <%= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' %>
    

    嗯...这不起作用,因为它在按原样显示之前由 Grails 进行了预处理。

    所以我看到的唯一解决方案是创建一个 TagLib 并输出如下内容:

    class MetaTagLib {
    
        static namespace = 'my'
    
        def meta = {
            out << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>"
        }
    }
    

    并像这样使用它:

    <my:meta />
    

    它有效。经过测试。

    【讨论】:

    • 不幸的是它不起作用并导致
    • 是的,它有效。我将把它归档为 Grails 错误。我应该能够使用 Grails 生成 100% 有效的 HTML。
    【解决方案2】:

    您可以使用&lt;!DOCTYPE html&gt; (that's it, really!) 验证 HTML5 而不是 HTML 4.01。 HTML5 allows trailing slashes even in the HTML syntax,以便允许像这样的系统产生伪 XHTML。

    当然,HTML5 还不是一个完整的标准;它可能会改变。我认为它的这方面不太可能改变,但是关于许多新的 HTML5 功能仍然存在一些相当有争议的争论,所以请记住它尚未最终确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多