我正在构建一个SpringBoot应用程序,用于从数据库加载国际化消息 . (Followed this tutorial)
从那时起,我不得不创建一个ThymeleafConfiguration类并设置一个SpringTemplateEngine Bean . 本教程只给出了一个关于这个配置的粗略概念(仅配置了消息源,但没有配置其他模板引擎配置),因此它破坏了我的控制器页面呈现(控制器现在返回字符串而不是视图) .
我正在尝试配置我的TemplateEngine的其余部分(例如TemplateResolver,我认为这是渲染不正确的原因),但是,我无法弄清楚如何正确地做到这一点[我不断得到“An模板解析期间发生错误(模板:“ServletContext资源[/templates/login.html]”)“消息” .
如何正确配置SpringTemplateEngine?
到目前为止我的配置:
@Configuration
public class ThymeleafConfiguration implements WebMvcConfigurer, ApplicationContextAware{
private ApplicationContext applicationContext;
@Autowired
private DatabaseMessageSource databaseMessageSource;
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(thymeleafTemplateEngine());
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
private ITemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setPrefix("/templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
@Bean
public SpringTemplateEngine thymeleafTemplateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
engine.setTemplateEngineMessageSource(databaseMessageSource);
return engine;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
控制器类:
@Controller
public class ApplicationController {
@RequestMapping("/home")
public String home() {
return "/home.html";
}
@RequestMapping("/core/index")
public String index() {
return "/core/index.html";
}
@RequestMapping("/login")
public String login() {
return "login";
}
1 回答
问题在于
由于模板位于src / main / resources中,因此必须指向classpath,如下所示:
此外,从接口到不应干扰结果的实现类有一点变化 .