博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC中使用Thymeleaf模板引擎
阅读量:4089 次
发布时间:2019-05-25

本文共 2319 字,大约阅读时间需要 7 分钟。

中使用Thymeleaf模板引擎   发表在

一定让你惊叹于Thymeleaf的强大,但是真正在Web应用结合Web特性使用模板引擎,还需要进行一定的配置和学习。

Thymeleaf于Spring集成

Thymeleaf除了基本的模板引擎,还提供了一套Spring集成技术使得在中能够使用它完全替代JSP作为模板引擎,它的功能特性如下:

  • Spring MVC中@Controller中的方法可以直接返回模板名称,接下来Thymeleaf模板引擎会自动进行渲染
  • 模板中的表达式支持Spring表达式语言(Spring EL)
  • 表单支持,并兼容Spring MVC的数据绑定与验证机制
  • 国际化支持

如果你还不了解Thymeleaf,请一定先阅读。

配置TemplateEngine

上述配置的TemplateEngine从/WEB-INF/templates/目录中读取文件夹,默认的后缀名是.html,所以在渲染模板时只需要提供模板的名字(例如index.html可以省略为index),TemplateEngine就可以找到对应的模板内容。

为了能够方便的让@Controller进行渲染(类似JSP),例如:

@Controllerpublic class IndexController {    @RequestMapping("/")    public String index() {        return "index";    }}

还需要配置Spring中的ViewResolver

@Controller

Spring MVC中@Controller用于处理HTTP请求并返回内容到浏览器。在渲染模板前,ThymeleafViewResolver会自动把当前的Model加入到Context中:

@Controllerpublic class IndexController {    @RequestMapping("/")    public String index(Model model) {        model.addAttribute("list", Lists.newArrayList("a", "b", "c"));        return "index";    }}

这样在index模板中可以访问表达式${list}得到`["a", "b", "c"]的值。

表单

Command对象用来在Spring MVC中绑定表单与后端对象,Thymeleaf提供的th:object属性可以用来指定Command对象:

Title

Text

指定th:object属性后,各个<input>中还需要指定th:field,这与后端绑定对象的字段名要一致。在@Controller中的方法如下:

@RequestMapping(value = "/", method = GET)public String index(Model model) {    model.addAttribute("entries", getAll());    model.addAttribute("command", new Entry());    return "index";}@RequestMapping(value = "/", method = POST)public String post(Entry entry) {    add(entry.title, entry.text);    return "redirect:/";}

post()方法的参数Entry entry是根据HTTP请求的输入titletext值自动进行的绑定。

在中使用Thymeleaf

Spring Boot能够简化应用配置、加速开发,对于Thymeleaf模板引擎提供了内置支持,在Spring Boot应用中只需要引入:

org.springframework.boot
spring-boot-starter-thymeleaf

所有Thymeleaf的相关依赖都会被加载到类路径中,更重要的是,上文中所有TemplateEngineThymeleafViewResolver等bean都在应用启动后被自动实例化,默认情况下模板的目录位于src/main/resources/templates/文件夹中,所以开发者只需要在这个文件夹中添加模板文件即可。

如果需要改变一些配置,可以在application.properties中写入:

spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8spring.thymeleaf.content-type=text/html # ;charset=
is added

改变这些配置的值,也就会自动改变Spring Boot帮助我们实例化的bean的配置。

更多文章请访问

你可能感兴趣的文章
学不会设计模式,是因为你还没用过这个神奇的网站!
查看>>
用 Python 写出 Gameboy 模拟器,这位丹麦小哥的大学项目火了!
查看>>
GitHub 热榜:人像卡通化!
查看>>
如果你觉得学习 Git 很枯燥,那是因为你还没玩过这款游戏!
查看>>
太赞了,《快乐学 Pandas》中文教程已正式开源!
查看>>
未来 10 年,软件开发技术的 8 个发展趋势
查看>>
GitHub 标星 2.3w+!这个开源的 Java 网络通信框架究竟有多牛逼...
查看>>
GitHub 热榜:用 Zoom 开会很无聊?赶紧试下这个会议换脸神器!
查看>>
写一个开源的 macOS 软件可以赚多少钱?
查看>>
太强了!成功打入 RTC 2020 编程挑战赛决赛圈的选手,到底有多秀...
查看>>
又一神书面世:《无需计算机的计算机科学》!
查看>>
微信支付的软件架构究竟有多牛逼...
查看>>
聊聊 5G 技术的那些事儿...
查看>>
微软当年挖下大坑,现砸重金买下危险域名 corp.com 来填!
查看>>
学不会数据结构与算法,是因为你还没看过这个图文并茂的算法中文课!
查看>>
这张「二维码」在 GitHub 上火了:扫一扫,打破系统边界,文件秒传
查看>>
霸榜 GitHub,一款开源的 Linux 神器!
查看>>
我不信这些技术名词的发音你都能读对!
查看>>
太赞了,亚马逊免费对外开放计算机编程课!
查看>>
如何画出一张优秀的架构图?
查看>>