2009-12-14 2 views
4

В моих Grails GSP файл я использую HTML мета-тег:Grails интерпретирует и закрывает HTML мета-тег

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

Проблема заключается в том, что Grails закрывает этот тег и визуализирует его как:

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

Это не подтверждает HTML-проверку W3C (так как мой doctype - это HTML, а не XHTML). Есть ли исправление для этого? Как я могу заставить Grails не интерпретировать метатег ?

Я использую grails-1.2-M4.

Развейте: Я создаю Grails ошибку GRAILS-5696 для этого вопроса.

ответ

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 /> 

Он работает. Проверено.

+0

К сожалению, это не сработает и приводит к

+0

См. Мой обновленный ответ. – fabien7474

+0

Да, это работает. Я собираюсь записать это как ошибку Grails. Я должен иметь возможность создавать 100% действительный HTML с помощью Grails. –

0

Вы можете подтвердить это как HTML5 вместо HTML 4.01, используя <!DOCTYPE html> (that's it, really!). HTML5 allows trailing slashes even in the HTML syntax, чтобы позволить таким системам создавать псевдо-XHTML.

Конечно, HTML5 еще не готовый стандарт; он может измениться. Я думаю, что этот аспект этого вряд ли изменится, но есть еще довольно спорные дебаты о многих новых функциях HTML5, поэтому имейте в виду, что он еще не финализирован.

Смежные вопросы