2011-01-12 21 views
0

私はgrailsアプリケーション用にレイアウトを定義しました。 'mainTemplate'私はg:layoutHeadを使用します(私のページはレイアウトにヘッドセクションを追加します)。レイアウトのメタタグを削除するにはどうすればよいですか?

しかし、自分のホームページのソースを調べると、まだレイアウトのメタ情報が得られます。

私は自分のページを定義されたテンプレートでレンダリングしますが、grailsはこのメタ情報を削除していたはずです。

http://grails.org/doc/1.3.x/ref/Tags/layoutHead.html

どのように私はそれを削除しますか?または私はここに何かを逃していますか?

+0

なぜ「」タグを削除したいのですか? –

+0

それを取り除くのにそれほど必要ではないが、私はそれがそこにあってはならないことを望んだ、私は何かを逃した感じ、またはそれはいくつかのバグだった。 – Vishal

答えて

4

<meta>タグを使用してレイアウトを定義している場合は、簡単には取り外しできません。ただし、<g:applyLayout>をビューに使用すると、<meta>タグを使用しないようにできます。

<!-- a GSP view, e.g. views/foo/index.gsp --> 
<g:applyLayout name="main"><!-- value for "name" is the same as what you'd use in the meta tag --> 
    <html> 
    <head><title>My Decorated Page</title></head> 
    <body> 
     Some content 
    </body> 
    </html> 
</g:applyLayout> 

基本的に何があなたのビューから<meta>タグを削除してから<g:applyLayout>とビューの内容をラップされてやっています。

確かに、これは多くの作業です。すべてのビューを更新する必要があります。足場を使用している場合は、おそらくsrc/templatesのスキャフォールドビューを更新する必要があります。正直言って、最後のビューから<meta>タグを削除することは、非常に例外的な場合(例えば、 "layout"との命名の競合など)を除いて、ほとんど不要です。つまり、にはがあります。ワイヤー、私にとっては非常に微細最適化 - 幸せそうです)。

+0

ありがとう、確かにそれは助けです。それを私のすべてのGSPに変えても、それはたくさんの仕事です。 – Vishal

0

WCAGバリデーターに準拠するために、<meta>タグを削除する必要がありました。

便利なように、タグライブラリの1つにアイテムを追加しました。その後、

def wcagValidLayoutHead = { 
    def head = request["__sitemesh__page"].head 
    out << head.replaceAll(/<meta .*name=['"]layout['"].*\/>/, '') 
} 

そしてそうようにそれを使用:

<head> 
    <title><g:layoutTitle default="My Valid HTML Page"/></title> 
    <my:wcagValidLayoutHead/> 
</head> 

それはハッキングのビットだと私は正規表現はスピードのために改善することができると確信しているが、それは動作します。


1:私はそれが実際に無効なHTMLですが、それはバリデータが幸せならば、私は大きく、より良い問題に進むことができます確信していません。

関連する問題