従来の Spring MVC アプリケーションで、JSP/JSTL ビューの代わりに GSP ビューを使用したいと考えています。次のように、groovy.servlet.TemplateServlet を web.xml に追加しました。
<servlet>
<servlet-name>GroovyTemplate</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
<init-param>
<param-name>template.engine</param-name>
<param-value>groovy.text.GStringTemplateEngine</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>GroovyTemplate</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
そして、Spring InternalResourceViewResolver をセットアップして GPS ファイルをロードします。ここまでは問題なく動作しますが、Model の値をテンプレートに公開するには、いくつかのトリック (TemplateServlet をサブクラス化し、それらを ServletBinding に追加する) を行う必要がありました。
次の障害は、c:out タグを使用すると JSTL がデフォルトで XML をエスケープし、Grails には GSP で使用される値を自動的にエスケープするコーデックの概念があることです。上記のテンプレート メソッドはデフォルトではエスケープしないため、開発者は XSS の脆弱性を回避するために細心の注意を払う必要があります。
Grails を使用せずにプレーンな Spring MVC アプリケーションで自動エスケープを含む GSP を使用する別の (より良い) 方法はありますか?