【发布时间】:2017-12-26 18:53:22
【问题描述】:
我在 Spring Boot 中配置 freemarker 时遇到问题。 我的应用程序类中有下一个代码。
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
FreeMarkerConfigurer freemarkerConfig = new FreeMarkerConfigurer();
freemarkerConfig.setTemplateLoaderPath("template");
freemarkerConfig.setDefaultEncoding("UTF-8");
Map<String, Object> freemarkerVariables = new HashMap<String, Object>();
freemarkerVariables.put("layout", freemarkerLayoutDirectives());
freemarkerConfig.setFreemarkerVariables(freemarkerVariables);
return freemarkerConfig;
}
@Bean
public ViewResolver viewResolver() {
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setCache(false);
viewResolver.setPrefix("");
viewResolver.setSuffix(".ftl");
viewResolver.setContentType("text/html; charset=utf-8");
return viewResolver;
}
@Bean
public Map<String, TemplateModel> freemarkerLayoutDirectives() {
Map<String, TemplateModel> freemarkerLayoutDirectives = new HashMap<String, TemplateModel>();
freemarkerLayoutDirectives.put("extends", new ExtendsDirective());
freemarkerLayoutDirectives.put("block", new BlockDirective());
freemarkerLayoutDirectives.put("put", new PutDirective());
return freemarkerLayoutDirectives;
}
我使用此代码来配置 freemarker 和 freemarkerLayoutDirectives(继承)
我的模板放置在
src/main/webapp/templates
当我在本地机器上构建和运行应用程序时一切正常,但是当我尝试在 linux 服务器或 Docker(官方 spring docker)上运行相同的 .jar 时,我的应用程序在尝试下一个错误的渲染视图时崩溃:
There was an unexpected error (type=Not Found, status=404).
没有可用的消息
我的控制器代码
@RequestMapping(path = "/", method = {RequestMethod.GET})
public String homePage(Model model) String name,
BindingResult errors
) {
return "index";
}
【问题讨论】:
-
您实际上是在本地机器上运行 jar 文件,还是只是从 IDE 启动应用程序?最后一种情况,检查jar文件是否包含
webapp资源? -
可能与:stackoverflow.com/questions/35968479/…有关。也就是说,除非您将应用程序部署为“战争”文件,否则请使用纯类路径资源,而不是
src/main/webapp/templates。
标签: java spring spring-mvc spring-boot freemarker