我正在设置一个自定义模板引擎,它应该从两个位置处理模板。我如何设置一个可以实现此目的的自定义模板引擎?好的,引擎应该只处理 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; }尝试加载内部模板时,文件系统模板会加载得很好。由于某种原因,模板引擎只选择一个解析器而不检查另一个。我怎样才能解决这些问题并使模板引擎处理这两个问题?
添加回答
举报
0/150
提交
取消