Операционка Windows. В приложении структура каталогов:
java
├─ resources
│ └─ templates
└─ webapp
├─ WEB-INF
└─ templates
По умолчанию Thymeleaf настроен на
└─ resources
└─ templates
Как мне сменить каталог templates в Thymeleaf на
└─ webapp
├─ WEB-INF
└─ templates
Прописал настройки в пропертях:
sping:
thymeleaf:
prefix: classpath:/webapp/templates/
не работает, все равно пишет:
Cannot find template location: classpath:/webapp/templates/
В настройках WebMvcConfigurer нужно переопределить метод configureViewResolvers:
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private ServletContext servletContext;
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ServletContextTemplateResolver templateResolver =
new ServletContextTemplateResolver(servletContext);
// Папка с шаблонами относительно папки 'webapp'.
// Полный путь: '/src/main/webapp/view/'.
templateResolver.setPrefix("/view/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
ResourceBundleMessageSource messageSource =
new ResourceBundleMessageSource();
// Расположение файла 'messages.properties' с константами.
// Полный путь: '/src/main/resources/messages.properties'.
messageSource.setBasename("resources/messages");
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
templateEngine.setTemplateEngineMessageSource(messageSource);
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine);
viewResolver.setOrder(1);
registry.viewResolver(viewResolver);
}
}
Метод viewResolver можно вызывать несколько раз для разных папок с шаблонами с разными настройками.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей