4

在我的 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 。

4

2 回答 2

3

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

<%= '<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 />

有用。经测试。

于 2009-12-14T11:53:12.917 回答
0

<!DOCTYPE html>您可以通过使用(就是这样,真的!)验证为 HTML5 而不是 HTML 4.01 。HTML5甚至在 HTML 语法中也允许尾部斜杠,以便允许像这样的系统产生伪 XHTML。

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

于 2010-01-11T02:24:20.420 回答