In a typical Spring MVC application, @Controller
classes are responsible for preparing a model map with data and selecting a view to be rendered. This model map allows for the complete abstraction of the view technology and, in the case of Thymeleaf, it is transformed into a VariablesMap
object (part of the Thymeleaf template execution context) that makes all the defined variables available to expressions executed in templates.
Spring model attributes
Spring MVC calls the pieces of data that can be accessed during the execution of views model attributes. The equivalent term in Thymeleaf language is context variables.
There are several ways of adding model attributes to a view in Spring MVC. Below you will find some common cases:
Add attribute to Model
via its addAttribute
method:
@RequestMapping(value = "message", method = RequestMethod.GET)
public String messages(Model model) {
model.addAttribute("messages", messageRepository.findAll());
return "message/list";
}
Return ModelAndView
with model attributes included:
@RequestMapping(value = "message", method = RequestMethod.GET)
public ModelAndView messages() {
ModelAndView mav = new ModelAndView("message/list");
mav.addObject("messages", messageRepository.findAll());
return mav;
}
Expose common attributes via methods annotated with @ModelAttribute
:
@ModelAttribute("messages")
public List<Message> messages() {
return messageRepository.findAll();
}
As you may have noticed, in all the above cases the messages
attribute is added to the model and it will be available in Thymeleaf views.
In Thymeleaf, these model attributes (or context variables in Thymeleaf jargon) can be accessed with the following syntax: ${attributeName}
, whereattributeName
in our case is messages
. This is a Spring EL expression. In short, Spring EL (Spring Expression Language) is a language that supports querying and manipulating an object graph at runtime.
You can access model attributes in views with Thymeleaf as follows:
<tr th:each="message : ${messages}">
<td th:text="${message.id}">1</td>
<td><a href="#" th:text="${message.title}">Title ...</a></td>
<td th:text="${message.text}">Text ...</td>
</tr>
Request parameters
Request parameters can be easily accessed in Thymeleaf views. Request parameters are passed from the client to server like:
https://example.com/query?q=Thymeleaf+Is+Great!
Let’s assume we have a @Controller
that sends a redirect with a request parameter:
@Controller
public class SomeController {
@RequestMapping("/")
public String redirect() {
return "redirect:/query?q=Thymeleaf Is Great!";
}
}
In order to access the q
parameter you can use the param.
prefix:
<p th:text="${param.q[0]}" th:unless="${param.q == null}">Test</p>
Two things are important to notice in the above example:
-
${param.q != null}
checks if the parameterq
is set - Parameters are always string arrays, as they can be multivalued (e.g.
https://example.com/query?q=Thymeleaf%20Is%20Great!&q=Really%3F
).
Another way to access request parameters is by using the special object #httpServletRequest
that gives you direct access to thejavax.servlet.http.HttpServletRequest
object:
<p th:text="${#httpServletRequest.getParameter('q')}" th:unless="${#httpServletRequest.getParameter('q') == null}">Test</p>
Session attributes
In the below example we add mySessionAttribute
to session:
@RequestMapping({"/"})
String index(HttpSession session) {
session.setAttribute("mySessionAttribute", "someValue");
return "index";
}
Similarly to the request parameters, session attributes can be access by using the session.
prefix:
<div th:text="${session.mySessionAttribute}">[...]</div>
Or by using #httpSession
, that gives you direct access to the javax.servlet.http.HttpSession
object.
ServletContext attributes
The ServletContext attributes are shared between requests and sessions. In order to access ServletContext attributes in Thymeleaf you can use theapplication.
prefix:
<table>
<tr>
<td>My context attribute</td>
<!-- Retrieves the ServletContext attribute 'myContextAttribute' -->
<td th:text="${application.myContextAttribute}">42</td>
</tr>
<tr>
<td>Number of attributes</td>
<!-- Returns the number of attributes -->
<td th:text="${application.size()}">42</td>
</tr>
<tr th:each="attr : ${application.keySet()}">
<td th:text="${attr}">javax.servlet.context.tempdir</td>
<td th:text="${application.get(attr)}">/tmp</td>
</tr>
</table>
Spring beans
Thymeleaf allows accessing beans registered at the Spring Application Context with the @beanName
syntax, for example:
<div th:text="${@urlService.getApplicationUrl()}">...</div>
In the above example, @urlService
refers to a Spring Bean registered at your context, e.g.
@Configuration
public class MyConfiguration {
@Bean(name = "urlService")
public UrlService urlService() {
return new FixedUrlService("somedomain.com/myapp); // some implementation
}
}
public interface UrlService {
String getApplicationUrl();
}
This is fairly easy and useful in some scenarios.
转自:http://www.thymeleaf.org/doc/springmvcaccessdata.html
相关推荐
thymeleaf,我个人认为是个比较好的模板,性能也比一般的,比如freemaker的要高,而且把将美工和程序员能够结合起来,美工能够在浏览器中查看静态效果,程序员可以在应用服务器查看带数据的效果。 thymeleaf是一个...
基于spring mvc+spring data+Thymeleaf+mysql的简单工程
spring boot+hibernate+spring mvc+thymeleaf 实例,下载导入即可运行,可独立部署到独立tomcat,可内置tomcat运行,配置都在,数据库mysql直接导入脚本即可,可加我扣扣410987712一起学习
Maven坐标:org.thymeleaf:thymeleaf-spring5:3.0.14.RELEASE; 标签:thymeleaf、spring5、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性...
使用springmvc、spring security、bootstrap、thymeleaf开发的具有CRUD功能的后台管理。
springmvc-百里香叶-jpa Spring MVC + Thymeleaf,Spring Security,Spring ORM + Spring Data JPA产品用以下技术开发的对象: Spring Security,Spring MVC和Thymeleaf。 Spring JDBC,Spring ORM,Spring Data JPA...
项目描述 学生成绩管理系统,有三...spring boot+spring mvc+mybatis+layui+jquery+thymeleaf http://localhost:8080/Sys/loginView 管理员账号 admin admin 老师登录 2020031920 111111 学生账号登录 20200319 111111
thymeleaf-3.0.5中文文档,清晰无广告,官方中文翻译 1.Thymeleaf简介 2.示例项⽬:Good Thymes Virtual Grocery 3.使⽤⽂本 4.标准表达式语法 5.设置属性值 6.循环迭代 7.条件判断 8.模板布局 9.局部变量 10.属性...
spring boot +spring security +thymeleaf 实现简单权限+remember-me功能
java运行依赖jar包
Maven坐标:org.thymeleaf:thymeleaf-spring5:3.0.10.RELEASE; 标签:thymeleaf、spring5、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容...
Spring Thymeleaf 示例 关于 spring mvc、thymeleaf、maven 的示例。 只需使用 mvn tomcat:run 来查看示例如何工作。
Maven坐标:org.thymeleaf:thymeleaf-spring5:3.0.10.RELEASE; 标签:thymeleaf、spring5、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
弹簧引导等级MVC百里香叶 带有Thymeleaf的SpringBoot Gradle MVC示例应用程序
本系统是基于Thymeleaf+SpringBoot+SpringDataJPA实现的的中小医院信息管理系统。简单实现了挂号收费,门诊管理,划价收费,药房取药,体检管理,药房管理,系统维护等基础功能。就诊卡提供了手动和读卡两种方式录入...
生命游戏使用Spring Boot,Spring MVC,Thymeleaf,Spring Data,JPA,REST,AOP,jQuery,Maven作为Web应用程序编写的生活游戏。 应用程序是用Spring Boot编写的。 您可以通过java -jar lifegame-0.0.1.jar来运行它...
Spring Security整合Thymeleaf实现访问控制,开发工具:IDEA
你好啤酒使用 Spring boot + Spring MVC + Thymeleaf 的学习练习
thymeleaf-spring-data-dialect, 使用thymeleaf和 Spring Data 简化数据分页 Thymeleaf Spring Data 方言使用thymeleaf和 spring 数据简化数据分页。这是Thymeleaf的方言,它提供一些属性来创建分页和排序元素,...
基于spring boot+spring data+Thymeleaf+mysql的简单工程