Thymeleaf常用语法:模板文件中表达式调用Java类的方法

在模板文件的表达式中,可以使用“${T(全限定类名).方法名(参数)}”这种格式来调用Java类的静态方法。

开发环境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8

新建一个名称为demo的Spring Boot项目。

1、pom.xml
加入Thymeleaf依赖

        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-thymeleaf</artifactId>        </dependency>

2、src/main/java/com/example/demo/TestUtils.java

package com.example.demo; public class TestUtils {    public static String toUpperCase(String s){        return s.toUpperCase();    }}

3、src/main/java/com/example/demo/TestController.java

package com.example.demo; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; @Controllerpublic class TestController {    @RequestMapping("/")    public String test(){        return "test";    }     public static String toLowerCase(String s){        return s.toLowerCase();    }}

4、src/main/resources/templates/test.html

<div th:text="${T(com.example.demo.TestUtils).toUpperCase('hello world 1')}"></div><div th:text="${T(com.example.demo.TestController).toLowerCase('HELLO WORLD 2')}"></div> 

浏览器访问:http://localhost:8080
页面输出:

HELLO WORLD 1hello world 2

thymeleaf中调用Java方法

将需要调用的类进行注册便可以在thymeleaf中进行调用

Java 代码

@Component("module")
public class ModuleService {
	private final BizSiteInfoService siteInfoService;
	private final BizArticleService bizArticleService;
	// some codes...
	public Object get(String moduleName) {
        switch (moduleName) {
            //热门文章
            case "hotList":
                return bizArticleService.hotList(CoreConst.PAGE_SIZE);
            //网站信息统计
            case "siteInfo":
                return siteInfoService.getSiteInfo();
        }
    }
}
12345678910111213141516

tymeleaf代码

获取对象

<div>文章总数:<span th:text="${@module.get('siteInfo').articleCount}"></span> 篇</div>
1

获取列表

<ol class="article-list">
    <li th:each="item,temp:${@module.get('hotList')}"  class="slide">
        <span th:text="${temp.index+1}"></span>
        <a th:text="${item.title}" th:href="${'/blog/article/'+item.id}"></a>
    </li>
</ol>
123456
posted @ 2023-02-17 19:37  xiondun  阅读(497)  评论(0编辑  收藏  举报