【发布时间】:2015-01-22 06:57:33
【问题描述】:
我有一个应用程序正在使用 Spring Boot (Maven) 运行。当前配置为带有独立 Tomcat 的 WAR。一切正常。
如果我添加tiles-extras v3.0.5,应用程序将崩溃并出现以下错误。我没有在应用程序中使用 FreeMarker。仅限 JSP 和瓷砖。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false)
编辑添加 viewResolver 以防需要。
@Bean
public UrlBasedViewResolver viewResolver() {
UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
viewResolver.setViewClass(TilesView.class);
viewResolver.setOrder(0);
return viewResolver;
}
已实施变更
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>${tiles.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-freemarker</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-velocity</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-request-mustache</artifactId>
</exclusion>
</exclusions>
</dependency>
新错误
Caused by: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspFactory
【问题讨论】:
-
排除 Freemarker 作为
tiles-extra的依赖项。 freemarker依赖会触发一些Freemarker组件在Spring Boot中的注册。 -
另一个提示,而不是使用
UrlBasedViewResolver,使用TilesViewResolver,可以为您节省几行代码。 -
您的第一条评论已失效。这解决了 Spring Boot 的问题。你是对的,它确实节省了一行:-) 不过我仍然需要 setOrder。
标签: spring spring-mvc spring-boot