猿问

Thymeleaf 3.0 模板引擎,从两个位置获取模板

我正在设置一个自定义模板引擎,它应该从两个位置处理模板。我如何设置一个可以实现此目的的自定义模板引擎?

好的,引擎应该只处理 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;

    }

尝试加载内部模板时,文件系统模板会加载得很好。


由于某种原因,模板引擎只选择一个解析器而不检查另一个。我怎样才能解决这些问题并使模板引擎处理这两个问题?


摇曳的蔷薇
浏览 194回答 1
1回答

largeQ

除非您设置setCheckExistence(true)了一个解析器(首先出现的解析器具有较低的顺序号),否则它会在找不到模板时抛出异常。 
随时随地看视频慕课网APP

相关分类

Java
我要回答