在没有Grails的普通Spring MVC中使用GSP视图
我想在一个普通的Spring MVC应用程序中使用GSP视图而不是JSP / JSTL视图。 我已经将groovy.servlet.TemplateServlet添加到web.xml,如下所示:
GroovyTemplate groovy.servlet.TemplateServlet template.engine groovy.text.GStringTemplateEngine GroovyTemplate *.gsp
并设置Spring InternalResourceViewResolver来加载GPS文件。 到目前为止一切正常,但是为了将模型中的值暴露给模板,我必须做一些技巧(inheritanceTemplateServlet并将它们添加到ServletBinding中)。
现在我的下一个障碍是默认情况下JSTL在使用c:out标记时转义XML,而Grails具有编解码器的概念来自动转义GSP中使用的值。 默认情况下,上述模板方法不会转义,这需要开发人员非常小心地避免XSS漏洞。
是否有另一种(更好的)使用GSP的方法,包括在不使用Grails的普通Spring MVC应用程序中自动转义?
今天GSP for Spring Boot刚刚发布。 这提供了在常规Spring Web应用程序中使用GSP而不是JSP的能力。 你可以在这里看到一个例子: https : //github.com/grails/grails-boot/blob/master/sample-apps/gsp/script/templates/index.gsp
您可以使用GroovyPagesServlet
而不是使用TemplateServlet
(我没有测试过,只是查看了Grails的web.xml和类的代码)。
后者需要设置一个Spring bean,命名为groovyPagesTemplateEngine
,并输入GroovyPagesTemplateEngine
(在本例中为groovyPagesTemplateEngine
)。
使用InternalResourceViewResolver
配置视图层是正确的。 您将分配一个GroovyPageView
。
默认情况下,GSP 未配置为执行HTML输出转义。 要配置它,请在Config.groovy grails.views.default.codec
从none
更改为html
。 有关更多信息,请参阅此文章 。
我们从Grails中提取了GSP,为Spring MVC应用程序定制了它并改进了配置支持。 请参阅我们的工具Rabbtor 。 我们不提供开源,但使用是免费的,我们一直在自己的应用程序中使用它。 Spring Boot的GSP依赖于Spring启动,它不会被维护,一些标签库依赖于Grails。 我们删除了这些依赖项,创建了自己的自定义标记库,更适合Spring MVC app。支持大多数标记库,并且具有与Spring JSP标记类似的实现。提供了数据绑定表单标记库,您也可以注册标记库或包。
- Groovy 2.0与静态编译的性能如何?
- Spring Tool Suite(STS)3.5.0 – org.codehaus.groovy.eclipse在求解器中是未知的
- Selenium UnreachableBrowserException – SoapUI中的“无法启动新会话”Groovy TestStep
- 请帮我弄清楚这个Web代理代码有什么问题
- 我如何让Groovy和JAXB一起玩得很好
- 如何在没有指定年份的情况下简单地解析日期?
- 为什么我的Geb测试返回“无法从回调中创建驱动程序”,即使在Grails中更新我的Selenium依赖项后?
- 在Grails中发布嵌套资源的问题
- 转换UTC时间T0本地时间在Java或Groovy中