使用变量表达式访问对象属性时,可以使用"对象.属性名"的语法。注意此处的属性名是对象属性getter方法的名称。
示例
在项目包下添加domain包,在包中创建“User”类,添加userId和userName属性
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = -5822957642556734665L;
private Integer userId;
private String userName;
//省略getter和setter方法,其中userName的getter方法的名称为getName
}
在TestServlet中创建User对象,并给属性赋值,保存到rquest中
User u = new User();
u.setUserId(1);
u.setUserName("张三");
request.setAttribute("user", u);
在test.html页面中使用ul标签显示属性的值
运行test.do,页面显示效果如下
在html页面中能够访问的web对象有request、session、servletContext对象,当不指定web对象进行访问时,thymeleaf只会request对象中的属性值。
示例
在TestServlet中,添加以下代码,在三个web对象中分别存入不同的属性值
request.setAttribute("scope", "request");
在index.html中输出scope的值
[[${scope}]]
运行test.do,页面显示效果如下,输出的是request范围的属性值
如果数据是保存在session或是servletContext中,必须指定范围对象。
语法
request范围:${xxx}或者${#request.getAttribute('xxx')
session范围:${session.xxxx}或者${#session.getAttribute('xxx')
servletContext范围:${application.xxx}或者${#servletContext.getAttribute('xxx')}
获取请求参数:$(param.xxx)或者${#request.getParameter('scope')}
示例,在TestServlet中不同web对象中保存数据
request.setAttribute("scope", "request");
request.getSession().setAttribute("scope", "session");
request.getServletContext().setAttribute("scope", "servletContext");
修改index.html代码,从不同范围中获取数据
- [[${scope}]]
- [[${session.scope}]]
- [[${application.scope}]]
- [[${param.scope}]]
在路径后添加参数scope=parameter,再次运行。效果如下
thymeleaf提供了一些内置变量,这些变量使用#开头,使用这些内置变量可以获得更高的灵活性。
变量名 |
说明 |
#ctx |
上下文对象。 |
#vars |
上下文变量。 |
#locale |
上下文locale。 |
#request |
(仅在Web上下文中)HttpServletRequest对象。 |
#response |
(仅在Web上下文中)HttpServletResponse对象。 |
#session |
(仅在Web上下文中)HttpSession对象。 |
#servletContext |
(仅在Web上下文中)servletContext对象。 |
示例
修改上一示例值的获取方式,使用内置变量访问
- [[${#request.getAttribute('scope')}]]
- [[${#session.getAttribute('scope')}]]
- [[${#servletContext.getAttribute('scope')}]]
- [[${#request.getParameter('scope')}]]
运行后效果与上一示例相同
文章来源于哔站《七、Thymeleaf对象的访问》
更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频
更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ :开源吧