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,然后用它们渲染视图。
改造 - 由jsp到Thymeleaf
引入依赖
1
2
3
4
5
6<!--thymeleaf模版 spring4.x-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>配置ViewResolver(在spring的xml文件里)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<!-- 配置ViewResolver 使用: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>接下来就可以直接使用了,跟之前的jsp没有什么不同
1
2
3
4
5
6
7(value = "/listpageplug/{start}", method = RequestMethod.GET)
private String listPagePlug(@PathVariable("start") String start, Model model) {
PageHelper.startPage(Integer.valueOf(start), 20);
List<Book> readingList = bookService.getListPlug();
model.addAttribute("books", readingList);
return "readingList";
}
到这里就改造完了,接下来就是Thymeleaf的各种用法了
这里举一个循环遍历的例子,后台返回了books对象集合
1 | <!--判断是否为空--> |