Хорошо бы сказать, что я изучаю Spring MVC, и недавно я пытаюсь создать шаблон, который я могу повторно использовать для своих представлений. Для реализации Thymeleaf 3.0.9 в моем приложении Spring 4.2.0 я использовал это руководство: https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/thymeleaf-views.html
После выполнения того, что говорится в руководстве, я могу отправлять атрибуты и показывать их в виде, но во время использования fragments
он просто не будет анализировать th attribute
в теге html.
Вот зависимости, от которых я звоню pom.xml
<!-- Thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.7.RELEASE</version>
</dependency>
Здесь я настраиваю распознаватель MyWebConfig.java
@EnableWebMvc
@Configuration
@ComponentScan
public class MyWebConfig {
@Autowired
ApplicationContext applicationContext;
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
@Bean
public SpringResourceTemplateResolver templateResolver(){
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(this.applicationContext);
templateResolver.setPrefix("/WEB-INF/views/template/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
return templateResolver;
}
@Bean
public ViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
}
Вот мои взгляды Структура каталогов :
Вот мой layout.html (тестов много, ни один не работает)
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head th:include="template/header.html::header"></head>
<body>
<h3>Hello<span th:text="${message}"></span></h3>
<p th:insert="/template/footer.html::footer"></p>
<p th:insert="base::footer"></p>
<p th:include="/template/footer.html::footer"></p>
<p th:include="base::footer"></p>
<p th:replace="/template/footer.html::footer"></p>
<p th:replace="base::footer"></p>
</html>
Вот мой footer.html
<p th:fragment="footer">This is the footer</p>
Вот мой header.html
<head th:fragment="header">
<meta charset="ISO-8859-1">
<title>Header</title>
</head>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/template/" />
<property name="suffix" value=".html" />
</bean>
<context:component-scan base-package="com.andrex" />
</beans>
А вот и результат:
Может кто-нибудь, пожалуйста, наставить меня?