【问题标题】:How to configure Spring-MVC to use Groovy Templates?如何配置 Spring-MVC 以使用 Groovy 模板?
【发布时间】:2015-09-14 10:11:14
【问题描述】:

到目前为止我已经配置好了

<beans>
    <bean id="groovyMarkupConfigurer" class="org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer">
        <property name="resourceLoaderPath" value="classpath:/WEB-INF/templates/" />
    </bean>
</beans>

<bean id="groovyMarkupViewResolver"     
      class="org.springframework.web.servlet.view.groovy.GroovyMarkupViewResolver"
      p:prefix="/WEB-INF/templates/" p:suffix=".tpl"/>

我在 /WEB-INF/templates/ 中有一个名为 test.tpl 的文件。比我在控制器中执行以下操作:

返回“测试”;

但我不断收到:无法解析名称为“spring”的 servlet 中名称为“test”的视图

顺便说一句:这是一个普通的 Spring MVC 项目,而不是一个 Spring Boot 项目。

【问题讨论】:

  • 你的第一个永远不会工作,因为/WEB-INF/ 不在类路径中。确保您没有其他视图解析器,如果您确实确保顺序正确。
  • 从控制台添加堆栈跟踪/错误可能会有所帮助(如在完整的堆栈跟踪/日志中而不是 sn-p)。
  • 此外,您当前的配置会导致在 WEB-INF/templates/WEB-INF/templates 的类路径中定位文件...看起来我也不是您想要的...
  • 谢谢我不得不省略 ViewResolver 中的前缀设置

标签: java spring spring-mvc groovy


【解决方案1】:

一开始有几件事是错误的。

  1. /WEB-INF/ 不是类路径的一部分。因此,您当前的GroovyMarkupConfigurer 配置会将文件定位到错误的目录中。从配置中删除classpath:

    <property name="resourceLoaderPath" value="/WEB-INF/templates/" />
    
  2. 由于 1 和您提供了前缀的事实,您当前的配置将尝试加载 classpath/WEB-INF/templates/WEB-INF/templates/test.tpl。去掉前缀。

    <bean id="groovyMarkupViewResolver" class="org.springframework.web.servlet.view.groovy.GroovyMarkupViewResolver" p:suffix=".tpl"/>
    

如果你有更多的UrlBasedViewResolvers,那么你就有点麻烦了,因为这不起作用,他们总是会返回一个 URL 来重定向/转发到以呈现视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多