首页 > 其他分享 >Thymeleaf对象

Thymeleaf对象

时间:2023-06-14 13:31:43浏览次数:41  
标签:内置 name 对象 Thymeleaf session public 模板

1. Thymeleaf 基本对象   115-117

模板引擎提供了一组内置的对象,这些内置的对象可以直接在模板中使用,这些对象由#

号开始引用,我们比较常用的内置对象

1.2 #request 表示 HttpServletRequest

1.3  #session 表示 HttpSession 对象

1.4 session 对象,表示 HttpSession 对象

文档地址:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#web-context-namespaces-for-requestsession-attributes-etc.

1.2和1.3和1.4 代码如下

session 表示Map对象的, 是#session的简单表示方式, 用来获取session中指定的key的值

#session.getAttribute("loginname") == session.loginname

这些是内置对象,可以在模板文件中直接使用。

//模板内置对象   115
    @GetMapping("/baseObject")
    public String baseObject(Model model, HttpServletRequest request,
                             HttpSession session){
        //添加数据
        model.addAttribute("myname","李思");
        //添加到request域
        request.setAttribute("requestData","request作用域中的数据");
        //添加到session域中
        request.getSession().setAttribute("sessionData","session作用域中的数据");

        //直接使用session添加
        session.setAttribute("loginname","zhangsan");

        return "baseObject";
    }

baseObject.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>模板内置对象,方便使用request,session   115</title>
</head>
<body>
    <div style="margin-left: 350px">
        <h3>内置对象#request,#session,session的使用</h3>
        <p>获取作用域中的数据</p>
        <p th:text="${#request.getAttribute('requestData')}"></p>
        <p th:text="${#session.getAttribute('sessionData')}"></p>
        <p th:text="${session.loginname}"></p>

        <br/>
        <br/>
        <h3>使用内置对象的方法   116</h3>
        getRequestURL=<span th:text="${#request.getRequestURL()}"></span><br/>
        getRequestURI=<span th:text="${#request.getRequestURI()}"></span><br/>
        getQueryString=<span th:text="${#request.getQueryString()}"></span><br/>
        getContextPath=<span th:text="${#request.getContextPath()}"></span><br/>
        getServerName=<span th:text="${#request.getServerName()}"></span><br/>
        getServerPort=<span th:text="${#request.getServerPort()}"></span><br/>
        sessionId,getId=<span th:text="${#session.getId()}"></span>
    </div>
</body>
</html>

Thymeleaf对象_自定义

1.5 获取参数  118

baseObject.html


<h3>param对象:表示请求的参数集合</h3>
name参数的值:<span th:text="${param.name}"></span><br/>
参数的数量:<span th:text="${param.size()}"></span><br/>

在浏览器输入

http://localhost:9001/myboot/tpl/baseObject?name=lisi&age=20

Thymeleaf对象_自定义_02

2.  内置工具类对象  119-123

模板引擎提供的一组功能性内置对象,可以在模板中直接使用这些对象提供的功能方法工作中常使用的数据类型,如集合,时间,数值,可以使用 Thymeleaf 的提供的功能性对象来处理它们内置功能对象前都需要加#号,内置对象一般都以 s 结尾

官方手册:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

#dates: java.util.Date 对象的实用方法,

#calendars: 和 dates 类似, 但是 java.util.Calendar 对象;

#numbers: 格式化数字对象的实用方法;

#strings: 字符串对象的实用方法: contains, startsWith, prepending/appending 等;

#objects: 对 objects 操作的实用方法;

#bools: 对布尔值求值的实用方法;

#arrays: 数组的实用方法;

#lists: list 的实用方法,比如

#sets: set 的实用方法;

#maps: map 的实用方法;

#aggregates: 对数组或集合创建聚合的实用方法

Cat

package com.bjpowernode.vo;

//实体类  119
public class Cat {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}

Dog

package com.bjpowernode.vo;

//实体类  119
public class Dog {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                '}';
    }
}

Zoo

package com.bjpowernode.vo;

//实体类  119
public class Zoo {
    private Cat cat;
    private Dog dog;

    public Cat getCat() {
        return cat;
    }

    public void setCat(Cat cat) {
        this.cat = cat;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Zoo{" +
                "cat=" + cat +
                ", dog=" + dog +
                '}';
    }
}

2.1 演示  119-123

演示

#dates: 处理日器的工具类

#numbers:处理数字的

#lists: 处理list集合的

//内置的工具类对象   119
    @GetMapping("/utilobject")
    public String utilObject(Model model){
        model.addAttribute("mydate",new Date());
        model.addAttribute("mynum",26.695);
        model.addAttribute("mystr","bjpowernode");

        List<String> list = Arrays.asList("a","b","c");
        model.addAttribute("mylist",list);


        //创建Zoo对象  123
        Zoo zoo = new Zoo();
        Cat cat = new Cat();
        cat.setName("短腿");

        Dog dog = new Dog();
        dog.setName("二哈");

        zoo.setCat(cat);
        //zoo.setDog(dog); zoo.dog = null

        model.addAttribute("zoo",zoo);

        return "utilObject";
    }

utilObject.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>内置工具类对象   119</title>
</head>
<body>
  <div style="margin-left: 350px">
      <h3>日期类对象 #dates</h3>
      <p th:text="${#dates.format(mydate)}"></p>
      <p th:text="${#dates.format(mydate,'yyyy-MM-dd')}"></p>
      <p th:text="${#dates.format(mydate,'yyyy-MM-dd HH:mm:ss')}"></p>
      <p th:text="${#dates.year(mydate)}"></p>
      <p th:text="${#dates.month(mydate)}"></p>
      <p th:text="${#dates.monthName(mydate)}"></p>
      <p th:text="${#dates.createNow()}"></p>
      <br/>

      <h3>内置工具类#numbers,操作数字的  120</h3>
      <p th:text="${#numbers.formatCurrency(mynum)}"></p>
      <p th:text="${#numbers.formatDecimal(mynum,5,2)}"></p>

      <br/>
      <h3>内置工具类#strings,操作字符串   121</h3>
      <p th:text="${#strings.toUpperCase(mystr)}"></p>
      <p th:text="${#strings.indexOf(mystr,'power')}"></p>
      <p th:text="${#strings.substring(mystr,2,5)}"></p>
      <p th:text="${#strings.substring(mystr,2)}"></p>
      <p th:text="${#strings.concat(mystr,'---java开发的黄埔军校---')}"></p>
      <p th:text="${#strings.length(mystr)}"></p>
      <p th:text="${#strings.length('hello')}"></p>
      <p th:unless="${#strings.isEmpty(mystr)}"> mystring 不是 空字符串  </p>

      <br/>
      <h3>内置工具类#lists,操作list集合  122</h3>
      <p th:text="${#lists.size(mylist)}"></p>
      <p th:if="${#lists.contains(mylist,'a')}">有成员a</p>
      <p th:if="!${#lists.isEmpty(mylist)}"> list 集合有多个成员</p>

      <br/>
      <h3>处理null  123</h3>
      <p th:text="${zoo?.dog?.name}"></p>

  </div>


</body>
</html>


Thymeleaf对象_Thymeleaf对象_03

3. 自定义模板  124

模板是内容复用, 定义一次,在其他的模板文件中多次使用。

模板使用:

3.1 定义模板

语法

th:fragment="模板自定义名称"

例如:
<div th:fragment="head">
    <p>
        动力节点-java开发
    </p>
    <p>
        www.bjpowernode.com
    </p>
</div>

3.2 使用模板   124

对于使用模板:有包含模板(th:include), 插入模板(th:insert)

1) ~{templatename :: selector}
   templatename:  文件名称
   selector: 自定义模板名称
2)templatename :: selector
   templatename:  文件名称
   selector: 自定义模板名称
// 自定义模板   125
    @GetMapping("/customtpl")
    public String customTemplate(Model model){
        return "customtpl";
    }

head.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>自定义模板  124</title>
</head>
<body>
    <div th:fragment="top">
        <p>北京动力节点</p>
        <p>网站 www.bjpowernode.com</p>
    </div>


    <div th:fragment="menu">
        <p>文档|下载|blog</p>

    </div>
</body>
</html>

footer.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义模板   125</title>
</head>
<body>
    <div>
        footer.html
        @copy; 动力节点2020
    </div>
</body>
</html>

customtpl.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>使用自定义模板  125</title>
</head>
<body>

    <div style="margin-left: 350px">

        <h3>插入模板 th:insert</h3>
        <div th:insert="~{ head :: top }">
            第一种方式使用模板th:insert
        </div>

        <br/>
        <br/>
        <h3>插入模板 第二种格式</h3>
        <p th:insert="head :: top"></p>


        <br/>
        <br/>
        <h3>包含模板,第一种语法</h3>
        <div th:include="~{ head :: top}">
        </div>


        <br/>
        <br/>
        <h3>包含模板,第二种语法</h3>
        <div th:include="head :: top">
        </div>

        <br>
        <div th:include="head :: menu"></div>
        <br>

    </div>
</body>
</html>

Thymeleaf对象_自定义_04

3.3 引用模板文件  128

templates文件下的common目录

left.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title   128</title>
</head>
<body>
     <div>
         左侧树形结构
         部门管理
         人员管理
         考勤入口
     </div>
</body>
</html>

customtpl.html

<br/>
        <br/>
        <h3>使用整个文件作为复用的内容(整个文件作为模板使用)  127</h3>
        <div th:include="footer :: html"></div>
        <br/>
        <div th:include="footer" ></div>
        <br/>
        <div th:insert="footer"></div>


         <h3>使用其他目录中的模板文件  128</h3>
        <div th:insert="common/left :: html"></div>
        <br/>
        <br/>
        <div th:include="common/left"></div>

Thymeleaf对象_自定义_05

标签:内置,name,对象,Thymeleaf,session,public,模板
From: https://blog.51cto.com/u_15784725/6476790

相关文章

  • 窗体对象JFrame
    importjavax.swing.*;publicclassJFrameTest{   publicstaticvoidmain(String[]args){       //创建窗体对象       JFrameframe=newJFrame();       //设置窗体大小       frame.setSize(500,500);       //设置窗......
  • JavaScript中数组(Array)与对象(Object)中的检索方式
    这里只是要说明一点,数组(Array)和对象(Object)都可以用[...]的方式来进行检索[...]中包含的需要是一个表达式,这个表达式的值最终会以字符串的形式被使用因为不论是数组(Array)还是对象(Object),他们都是以键值对的形式存储内容的,而所有的键的数据类型都是字符串(Array好像不是,但是先这样......
  • 基于SpringBoot+MyBatis+Thymeleaf的学生管理系统搭建
    学生管理系统Maven工程搭建【步骤】:打开IDEA工具,选择创建一个新工程。选择SpringInitializr,点击Next按钮。大家也可以通过Spring提供的在线创建的方式创建工程,访问(https://start.spring.io),然后将创建后的工程代码zip包解压后,使用IDEA导入工程。这种方式不在本文描述......
  • 类和对象
    Java都是值传递,非引用传递本质:以类的方法组织代码,以对象的组织(封装)数据对象抽象:抽像(的)对象:抽象的具体实例创建对象(实例化)使用new关键字例如:student对象就是一个Student类的具体实例使用new创建时分配内存空间对创建好的对象进行默认初始化对类中构造器的调用......
  • 实验7 面向对象编程与内置模块
    实验任务1task1.py1classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._balance=initial_amount7defdeposit(self,amount):......
  • 实验7 面向对象编程与内置模块
    task1源代码'''银行账户数据:持卡人姓名、账号、当前余额操作:取款、存款、打印账户信息、返回账户余额'''classAccount:'''一个模拟银行账户的简单类'''def__init__(self,name,account_number,initial_amount=10):''......
  • 面向对象编程和内置模块
    task11classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._blance=initial_amount78defdeposit(self,amount):9......
  • 实验7 面向对象编程与内置模块
    实验任务1task1.py1classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._balance=initial_amount7defdeposit(self,amount):......
  • 实验7 面向对象编程与内置模块
    task1源代码:classAccount:def__init__(self,name,account_number,initial_amount=10):self._name=nameself._card_no=account_numberself._balance=initial_amountdefdeposit(self,amount):self._balance+=amount......
  • 《C++》类和对象
    C++面向对象的三大特性:封装、继承、多态封装将属性和行为作为一个整体,表现生活中的事物。对属性和行为加以权限控制。classCompute{ //访问权限public: intAdd(intx,inty) { returnx+y; } intSub(intx,inty) { returnx+y; } intMul(intx,inty) {......