Spring实战(第四版)读书笔记19——Thymeleaf

1、配置Thymeleaf视图解析器

需要配置三个启用Thymeleaf与Spring集成的bean:

  • ThymeleafViewResolver:将逻辑视图名解析为Thymeleaf模板视图
  • SpringTemplateEngine:处理模板并渲染结果
  • TemplateResolver:加载Thymeleaf模板

java方式配置:

@Bean
public ViewResolver viewResolver(SpringTemplateEngine templateEngine){
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine);
    return viewResolver;
}

@Bean
public TemplateEngine templateEngine(TemplateResolver templateResolver){
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver);
    return templateEngine;
}

@Bean
public TemplateResolver templateResolver(){
    TemplateResolver templateResolver = new ServletContextTemplateResolver();
    templateResolver.setPrefix("/WEB-INF/templates/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    return templateResolver;
}

XML方式配置:

<bean id="viewResolver"
      class="org.thymeleaf.spring3.view.ThymeleafViewResolver"
      p:templateEngine-ref="templateEngine" />

<bean id="templateEngine"
      class="org.thymeleaf.spring3.SpringTemplateEngine"
      p:templateResolver-ref="templateResolver" />

<bean id="templateResolver" 
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"
      p:prefix="/WEB-INF/templates/"
      p:suffix=".html"
      p:templateMode="HTML5" />

2、定义简单的Thymeleaf模板

home.html:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns="http://www.thymeleaf.org">

    <head>
        <title>Spittr</title>
        <link rel="stylesheet" 
              type="text/css"
              th:href="@{/resources/style.css}"></link>
    </head>
    <body>
        <h1>Welcome to Spittr</h1>
        <a th:href="@{/spittles}">Spittles</a> |
        <a th:href="@{/spitter/register}">Register</a>
    </body>
</html>

@{}表达式相当于在JSP中使用的<c:url>或者<s:url>。Thymeleaf命名空间中许多属性的运行方式:对应着html中的属性,有着相同的名称,但是会渲染一些计算后得到的值。

3、借助Thymeleaf实现表单绑定

使用Thymeleaf将一个表单绑定到命令对象上:

<form method="POST" th:object="${spitter}">
    <div class="errors" th:if="${#fields.errors('*')}"
        <ul>
            <li th:each="err : ${#fields.errors('*')}"
                th:text="${err}">Input is incorrect</li>
        </ul>
    </div>
    <label th:class="${#fields.hasErrors('firstNmae')}? 'error'">First Name</label>
        <input type="text" th:field="*{firstName}"
               th:class="${#fields.hasErrors('firstName')}? 'error'" /><br/>
    <input type="submit" value="Register" />
</form>

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/107480442