gpt4 book ai didi

java - Spring Boot 无法使用 Java 配置更改 Thymeleaf 模板目录

转载 作者:行者123 更新时间:2023-12-02 12:19:39 24 4
gpt4 key购买 nike

将 Thymeleaf 模板文件放置在默认的 src/main/resources/templates 中对我来说效果很好。当我想将目录重命名为 mytemplates 时;它不起作用。

我收到无法找到模板位置:类路径:/templates/(请添加一些模板或检查您的 Thymeleaf 配置)警告应用程序启动。

当我指向主页时,我得到org.thymeleaf.exceptions.TemplateInputException:解析模板“索引”时出错,模板可能不存在或可能无法被任何配置的模板解析器访问 错误。

我使用以下 Java 配置:

package com.zetcode.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Description;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

@Bean
@Description("Thymeleaf template resolver serving HTML 5")
public ClassLoaderTemplateResolver templateResolver() {

ClassLoaderTemplateResolver tres = new ClassLoaderTemplateResolver();

tres.setPrefix("classpath:/mytemplates/");
tres.setSuffix(".html");
tres.setCacheable(false);
tres.setTemplateMode("HTML5");
tres.setCharacterEncoding("UTF-8");

return tres;
}

@Bean
@Description("Thymeleaf template engine with Spring integration")
public SpringTemplateEngine templateEngine() {

SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());

return templateEngine;
}

@Bean
@Description("Thymeleaf view resolver")
public ViewResolver viewResolver() {

ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();

viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setCache(false);
viewResolver.setOrder(1);

return viewResolver;
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
}

我做错了什么?

最佳答案

尝试以下操作:

第一个:在 application.properties 文件中定义以下设置

spring.thymeleaf.templateResolverOrder=1

现在自定义您的实现。

@Bean
public ClassLoaderTemplateResolver yourTemplateResolver() {
ClassLoaderTemplateResolver yourTemplateResolver = new ClassLoaderTemplateResolver();
yourTemplateResolver.setPrefix("yourTemplates/");
yourTemplateResolver.setSuffix(".html");
yourTemplateResolver.setTemplateMode(TemplateMode.HTML);
yourTemplateResolver.setCharacterEncoding("UTF-8");
yourTemplateResolver.setOrder(0); // this is iportant. This way spring
//boot will listen to both places 0
//and 1
emailTemplateResolver.setCheckExistence(true);

return yourTemplateResolver;
}

来源:Several template locations for Thymeleaf in Spring Boot

关于java - Spring Boot 无法使用 Java 配置更改 Thymeleaf 模板目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43710326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com