java - 在没有 Grails 的普通 Spring MVC 中使用 GSP View

标签 java spring spring-mvc groovy gsp

我想在普通的旧 Spring MVC 应用程序中使用 GSP View 而不是 JSP/JSTL View 。我在 web.xml 中添加了一个 groovy.servlet.TemplateServlet,如下所示:

<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 文件。到目前为止一切正常,但要将模型中的值暴露给模板我必须做一些技巧(子类化 TemplateServlet 并将它们添加到 ServletBinding)。

现在我的下一个障碍是 JSTL 在使用 c:out 标记时默认转义 XML,而 Grails 具有编解码器的概念以自动转义 GSP 中使用的值。上面介绍的模板方法默认是不转义的,这就需要开发者非常小心,避免XSS漏洞。

是否有另一种(更好的)方法来使用 GSP,包括在不使用 Grails 的普通 Spring MVC 应用程序中自动转义?

最佳答案

今天刚刚发布了 Spring Boot 的 GSP。这提供了在常规 Spring Web 应用程序中使用 GSP 而不是 JSP 的能力。您可以在此处查看示例:https://github.com/grails/grails-boot/blob/master/sample-apps/gsp/script/templates/index.gsp

关于java - 在没有 Grails 的普通 Spring MVC 中使用 GSP View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289665/

相关文章:

java - 如何在字段上硬编码组信息以进行级联验证

Java Spring Security - User.withDefaultPasswordEncoder() 已弃用?

java - Spring应用程序404适用于css文件,但不适用于html文件

java - 尝试部署到 tomcat 时,由 : java. lang.NoSuchFieldError: NULL 引起

java - 解析器忽略嵌套括号?

java - 为什么这个程序总是打印1

java - Apache Camel 在路由期间返回多个异常

java - 我需要找到数组中的第一个事件?

java - Hibernate 映射有时会停止工作

java - bean 类型 java.util.Properties 的不满足依赖异常