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'
_に戻るにはどうすればよいですか?
デフォルトのエンコーディングレベルがhtmlに設定されている場合
grails.views.default.codec = "html"
次に、ページ内の1つの式のhtmlエンコーディングを削除するために使用できます
$ {raw(expression)}
コーデックを適用できるさまざまなレベルを要約すると、次のようになります。
Config.groovyのgrails.views.default.codec='html'
を設定して、アプリケーション内のすべての${expressions}
でデフォルトでHTMLをエスケープします。
次に、ページ全体をデフォルトでnoneに戻したい場合は、ディレクティブを使用します。
<%@page defaultCodec="none" %>
または
<%@ defaultCodec="none" %>
デフォルトでHTMLに設定されているページ内の1つの式のHTMLエンコーディングを無効にするには、<%=expression%>
の代わりに${...}
表記を使用します。
$ {raw(myValue)}を使用してみてください。ページコーデックなどを宣言する必要はありません。
GRAILS-1827 から、特定のページのデフォルトコーデックを次のようにオーバーライドできるようです。
<%@ defaultCodec="HTML" %>
または
<%@page defaultCodec="HTML" %>
一部のバージョンでは(参照されている問題を参照)。
独自のタグを記述し、式を出力ストリームに直接記述します。
class YourTagLib {
static namespace = "x"
def unescaped = { attrs, body ->
out << attrs.value
}
}
GSPで使用します。
<x:unescaped value="${yourexpression}"/>
私は解決策があるかもしれません。しかし、それがどれほど受け入れられているかはわかりません。
式のデフォルトコーデックをHTMLに設定できますが、$ {}式の代わりにGSPで<%= myValue%>表記を使用して、エスケープされていない値をページに取得します。