【发布时间】:2016-09-01 03:43:26
【问题描述】:
在使用 Spring 应用程序(以及 Spring Boot,就此而言)苦苦挣扎了一段时间之后,看来我终于要让它工作了。
我已经通过依赖解决方案和 Maven 构建进行了转换。应用程序启动(而且非常快!)但是当我尝试访问时
localhost:8080
每当我尝试访问应用程序的登录页面时,都会收到以下浏览器消息:
HTTP Status 500 - Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "home/homeNotSignedIn", template might not exist or might not be accessible by any of the configured Template Resolvers
src/main/resources文件夹是
src/main/resources
static // CSS, IMG and JS
templates // html
application.properties
log4j.properties
现在,我知道我可能会混淆概念,但在我的 ApplicationConfiguration.java 上我有这个:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "b.c.g.c")
public class ApplicationConfiguration extends WebMvcConfigurerAdapter {
@Bean
@Description("Thymeleaf template resolver serving HTML 5")
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setCacheable(false);
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
@Description("Thymeleaf template engine with Spring integration")
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addDialect(new SpringSecurityDialect());
templateEngine.addDialect(new LayoutDialect(new GroupingStrategy()));
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
@Bean
@Description("Thymeleaf view resolver")
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setCache(false);
viewResolver.setOrder(1);
return viewResolver;
}
// other beans
}
而且,在application.properties,我有这个:
spring.thymeleaf.check-template-location=true
spring.thymeleaf.prefix=classpath:templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false
虽然我看到这些摘录说的是同一件事,但我敢打赌,对吧?
所以,实际上,有两个问题,
1) 如何确保 Spring + Thymeleaf 知道在哪里可以找到模板?
2) 如何让应用程序回复localhost:8080/appName 而不是localhost:8080/?
【问题讨论】:
-
您是否有任何理由进行配置?整个模板解析器是默认的自动配置。
标签: java spring spring-mvc spring-boot