uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

[grails] GrailsのGSPでスクリプトレット(<%=..%>)の出力でHTMLエスケープをデフォルトにする方法。

まず、Config.groovyで以下を設定。

grails.views.default.codec='html'

これによってGSP中で${}とかの出力はデフォルトでHTMLエスケープされるようになります。これはセオリー。問題は、これだけでは、<%= %>や<% %>の出力はHTMLエスケープされないということです。

なので、次に、レイアウトとかGSPページ中で以下を実行しておきます。

<% out = codecOut %>

おしまい。
ちなみに、Rails2では<%= %>のデフォルト出力がHTMLエスケープされていなかったのですが、Rails3でされるようになりました。その真似というわけです。