2016-11-01 2 views
2

Здравствуйте, я новичок в Тимелеафе и столкнулся с проблемой, которая может быть тривиальной, но тимелеар не ведет себя так, как должно быть. Немного помощь будет очень благодарнаThymeleaf (th: replace) не работает

Я не использую весенний ботинок для изучения. Кроме того, я также довольно новичок в Spring. Может пропустить одну-две вещи.

У меня есть простой index.html, как этот

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Index 2</title> 
</head> 
<body> 
    <div th:replace="~{fragments/fragment1 :: fr1}"></div> 
</body> 
</html> 

и fragment1.html

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta charset="UTF-8"> 
</head> 
<body> 
    <div th:fragment="fr1"><h1>HERE IS FRAGMENTS 1</h1></div> 
</body> 
</html> 

Якобы это решить шаблон, но результат не меняется.

вот что я получаю от источника браузер страницы

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Index 2</title> 
</head> 
<body> 
    <div th:replace="~{fragments/fragment1 :: fr1}"></div> 
</body> 
</html> 

и да, это точно так же, как в сыром index.html.

Итак, я решил, что это может иметь какое-то отношение к конфигурации, но для меня это просто отлично. В моем другом учебном проекте он просто отлично работает с точно такой же конфигурацией.

Вот конфигурация

/* package and imports */ 

@Configuration 
@EnableWebMvc 
@ComponentScan("com.eshop") 
public class WebConfig extends WebMvcConfigurerAdapter { 

    private static final String UTF8 = "UTF-8"; 
    private static final String VIEWS = "/WEB-INF/templates/"; 

    private static final String RESOURCES_LOCATION = "/resources/"; 
    private static final String RESOURCES_HANDLER = RESOURCES_LOCATION + "**"; 


    //Thymeleaf Configuration 
    @Bean 
    public ITemplateResolver templateResolver() { 
     SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); 
     resolver.setPrefix(VIEWS); 
     resolver.setSuffix(".html"); 
     resolver.setTemplateMode(TemplateMode.HTML); 
     resolver.setCacheable(false); 
     return resolver; 
    } 
    @Bean 
    public SpringTemplateEngine templateEngine(){ 
     SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 
     templateEngine.setTemplateResolver(templateResolver()); 
     templateEngine.setDialect(new SpringSecurityDialect()); 
     return templateEngine; 
    } 
    @Bean 
    public ViewResolver viewResolver(){ 
     ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); 
     viewResolver.setTemplateEngine(templateEngine()); 
     viewResolver.setCharacterEncoding(UTF8); 
     return viewResolver; 
    } 

    // tells DispatcherServlet to give static resources and not handle the resources itself 
    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 


    // handle various resources like javascript and css 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler(RESOURCES_HANDLER).addResourceLocations(RESOURCES_LOCATION); 
    } 
} 

pom.xml

<!-- thymeleaf --> 
<dependency> 
    <groupId>org.thymeleaf</groupId> 
    <artifactId>thymeleaf</artifactId> 
    <version>3.0.1.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.thymeleaf</groupId> 
    <artifactId>thymeleaf-spring4</artifactId> 
    <version>3.0.1.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
    <version>3.0.0.RELEASE</version> 
</dependency> 

здесь дерево проекта

webapp 
|__resources 
|__WEB-INF 
    |__i18n 
    |__templates 
     |__fragments 
     |__fragment1.html 
     |__index.html 

Что я скучаю здесь и как я могу это исправить?

ответ

3

Попробуйте призывая й: заменить без ~ {}

<div th:replace="fragments/fragment1 :: fr1"></div> 

Также убедитесь, что у вас есть отдельный HTML файл с именем fragment1.html

Это Layouts учебник должен помочь вам начать работать.

+0

все еще не работает. Дело в том, что тимелаф вообще не работает. Я пытаюсь использовать статические ресурсы, и результат все еще содержит выражение url ссылки @ {}, то же самое происходит с выражением href. Тимелеаф не разрешает выражения вообще – anothernem