我正在设置一个自定义模板引擎,它应该从两个位置处理模板。我如何设置一个可以实现此目的的自定义模板引擎?
好的,引擎应该只处理 thymeleaf 模板并从两个不同的位置获取它们。其中之一是通常的 /WEB-INF/templates 但另一个应该在应用程序上下文之外和文件系统中为了论证,让它在 D:/apps/myapp/instances/ 上。对于文件系统,我设法使用 FileTemplateResolver 处理模板,对于内部模板 ClassLoaderTemplateResolver,这不好,因为我读过 Thymeleaf 3.0 使用 SpringResourceTemplateResolver。除了这个问题我还有另一个问题,我无法让引擎处理这两个问题,它可以是一个或另一个基于订单。检查我的代码
@Bean
public TemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new
SpringTemplateEngine();
templateEngine.setEnableSpringELCompiler(true);
templateEngine.addTemplateResolver(thymeleafTemplateResolver());
templateEngine.addTemplateResolver(databaseTemplateResolver());
return templateEngine;
}
//Resolver for thymeleaf
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine((ISpringTemplateEngine) templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setOrder(0);
viewResolver.setApplicationContext(applicationContext);
return viewResolver;
}
//Pulling out methods
@Bean(name = "databaseTemplateResolver")
public ITemplateResolver databaseTemplateResolver() {
var prefix = rootDirectory+Directory.INSTANCES_DIR+File.separator;
System.out.println(prefix);
var templateResolver
= new FileTemplateResolver();
templateResolver.setPrefix(prefix);
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(1);
templateResolver.setCacheable(false);
return templateResolver;
}
尝试加载内部模板时,文件系统模板会加载得很好。
由于某种原因,模板引擎只选择一个解析器而不检查另一个。我怎样才能解决这些问题并使模板引擎处理这两个问题?
largeQ
相关分类