Spring Web MVC框架(十二) 使用Thymeleaf

本文详细介绍了Thymeleaf在Spring Web MVC框架中的使用,包括Thymeleaf的基本概念、如何引入Thymeleaf、以及Thymeleaf在页面元素和布局、表达式使用等方面的应用。通过实例展示了Thymeleaf如何处理文本、字面值、国际化文本,并解释了其条件表达式、默认表达式和内联字符串等特性。
摘要由CSDN通过智能技术生成

Thymeleaf简介

前面的例子我们使用的视图技术主要是JSP。JSP的优点是它是Java EE容器的一部分,几乎所有Java EE服务器都支持JSP。缺点就是它在视图表现方面的功能很少,假如我们想迭代一个数组之类的,只能使用<% %>来包括Java语句进行。虽然有标准标签库(JSTL)的补足,但是使用仍然不太方便。另外JSP只能在Java EE容器中使用,如果我们希望渲染电子邮件之类的,JSP就无能为力了。

Java生态圈广泛,自然有很多视图框架,除了JSP之外,还有Freemarker、Velocity、Thymeleaf等很多框架。Thymeleaf的优点是它是基于HTML的,即使视图没有渲染成功,也是一个标准的HTML页面。因此它的可读性很不错,也可以作为设计原型来使用。而且它是完全独立于Java EE容器的,意味着我们可以在任何需要渲染HTML的地方使用Thymeleaf。

Thymeleaf也提供了Spring的支持,我们可以非常方便的在Spring配置文件中声明Thymeleaf Beans,然后用它们渲染视图。

引入Thymeleaf

Thymeleaf的官网上有详细教程,如果需要的话可以直接上官网查看。我们现在使用一个Spring项目来集成Thymeleaf。首先引入Thymeleaf的依赖项。thymeleaf-spring4会自动引入Thymeleaf核心包thymeleaf-core,因此我们只需要在Gradle项目中声明这一个依赖即可。

compile group: 'org.thymeleaf', name: 'thymeleaf-spring4', version: '3.0.3.RELEASE'

然后需要声明Thymeleaf的几个Bean,模板引擎、模板解析器和视图解析器。如果是开发过程中,可以关闭Thymeleaf页面缓存,这样可以让对页面的改动及时反映到视图中。

<bean id="templateResolver"
      class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="/WEB-INF/templates/"/>
    <property name="suffix" value=".html"/>
    <property name="templateMode" value="HTML5"/>
    <!-- 缓存--><property name="cacheable" value="false"/>
</bean>

<bean id="templateEngine"
      class="org.thymeleaf.spring4.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver"/>
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine"/>
    <property name="order" value="1"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>

然后我们新建一个Thymeleaf页面,它和普通的HTML页面非常相似,只不过在html元素上需要添加xmlns:th="http://www.thymeleaf.org"属性。如果需要向页面传值的话,可以在控制器方法参数中添加Model对象,然后向其添加需要传递的对象。之后可以使用${var_name}在Thymeleaf中访问了。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body>
<h1>你好</h1>
<h2 th:text="呵呵"></h2>
</body>
</html>

然后我们用一个视图控制器将/和主页绑定。

<mvc:view-controller path="/" view-name="index"/>

然后运行程序,访问主页,即可看到Thymeleaf的结果。

基本使用

Thymeleaf使用的是OGNL语言,如果和Spring集成的话,会改为使用Spring EL。不过这两者之间大部分是相同的。因此这里讨论的大部分使用OGNL语言方法对Spring EL也适用。

文本、字面值和国际化文本

文本

文本需要th:text属性来设置。我们可以在文本元素中添加默认值,这样当Thymeleaf引擎处理失败的时候页面会显示默认值。${...}是变量表达式,将括号中的变量替换为其值。

<p th:text="${hello}">你好<p>
字面值

th:text中我们可以使用各种字面值,下面列举如下。

字符串字面值。如果需要连接多个字符串使用+即可。

<span 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值