本文共 2319 字,大约阅读时间需要 7 分钟。
中使用Thymeleaf模板引擎 由发表在
一定让你惊叹于Thymeleaf的强大,但是真正在Web应用结合Web特性使用模板引擎,还需要进行一定的配置和学习。
Thymeleaf除了基本的模板引擎,还提供了一套Spring集成技术使得在中能够使用它完全替代JSP作为模板引擎,它的功能特性如下:
@Controller
中的方法可以直接返回模板名称,接下来Thymeleaf模板引擎会自动进行渲染如果你还不了解Thymeleaf,请一定先阅读。
上述配置的TemplateEngine从/WEB-INF/templates/
目录中读取文件夹,默认的后缀名是.html
,所以在渲染模板时只需要提供模板的名字(例如index.html
可以省略为index
),TemplateEngine就可以找到对应的模板内容。
为了能够方便的让@Controller
进行渲染(类似JSP),例如:
@Controllerpublic class IndexController { @RequestMapping("/") public String index() { return "index"; }}
还需要配置Spring中的ViewResolver
:
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对象:
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请求的输入title
和text
值自动进行的绑定。
Spring Boot能够简化应用配置、加速开发,对于Thymeleaf模板引擎提供了内置支持,在Spring Boot应用中只需要引入:
org.springframework.boot spring-boot-starter-thymeleaf
所有Thymeleaf的相关依赖都会被加载到类路径中,更重要的是,上文中所有TemplateEngine
,ThymeleafViewResolver
等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的配置。
更多文章请访问