web-dev-qa-db-ja.com

grails.views.default.codec = 'html'構成をオーバーライドして 'none'に戻します

Grails(<2.3)では、grails Config.groovyに_grails.views.default.code='none'_を残した場合、GSPファイルで式を明示的にHTMLエンコードするのは私次第です:${myValue?.encodeAsHTML()}

Config.groovyで_grails.views.default.codec='html"_を設定すると、すべての式でHTMLエンコードが自動的に行われます:_${myValue}_。

私の質問:デフォルトを_'html'_に設定した場合、HTMLエンコーディングの動作を望まないときに、1つの式で_'none'_に戻るにはどうすればよいですか?

44

デフォルトのエンコーディングレベルがhtmlに設定されている場合

grails.views.default.codec = "html"

次に、ページ内の1つの式のhtmlエンコーディングを削除するために使用できます

$ {raw(expression)}

8
Himanshu Modi

コーデックを適用できるさまざまなレベルを要約すると、次のようになります。

Config.groovyのgrails.views.default.codec='html'を設定して、アプリケーション内のすべての${expressions}でデフォルトでHTMLをエスケープします。

次に、ページ全体をデフォルトでnoneに戻したい場合は、ディレクティブを使用します。

<%@page defaultCodec="none" %>

または

<%@ defaultCodec="none" %>

デフォルトでHTMLに設定されているページ内の1つの式のHTMLエンコーディングを無効にするには、<%=expression%>の代わりに${...}表記を使用します。

64

$ {raw(myValue)}を使用してみてください。ページコーデックなどを宣言する必要はありません。

7
Kalyan Das

GRAILS-1827 から、特定のページのデフォルトコーデックを次のようにオーバーライドできるようです。

<%@ defaultCodec="HTML" %>

または

<%@page defaultCodec="HTML" %>

一部のバージョンでは(参照されている問題を参照)。

4
Jean Barmash

独自のタグを記述し、式を出力ストリームに直接記述します。

class YourTagLib {

    static namespace = "x"

    def unescaped = { attrs, body ->
        out << attrs.value
    }

}

GSPで使用します。

<x:unescaped value="${yourexpression}"/>
1
Stefan Urbansky

私は解決策があるかもしれません。しかし、それがどれほど受け入れられているかはわかりません。

式のデフォルトコーデックをHTMLに設定できますが、$ {}式の代わりにGSPで<%= myValue%>表記を使用して、エスケープされていない値をページに取得します。

1