thymeleaf模板知识点基本用法

 1.创建项目 选择基本的骨架(thymeleaf,spring-web)

2.项目基本文件列表:

 3. 更改application.properties为.yml文件配置并配置端口号 ,关闭cache缓存

#端口号8080
server:
  port: 8080
#  关闭缓存
spring:
  thymeleaf:
    cache: false

 4.在idea中配置 thymeleaf 模板

 模板代码如下:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Index Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>

</body>
</html>

5. 新建UserVO实体类基本数据

@Data
public class UserVO {
    private String userName;
    private int age;
    private Date createTime;
    private char sex;
    private boolean boolVip;
    private List<String> classesList;
}

6. 新建controller层一个类UserController

@Controller
public class UserController {

    @GetMapping("/index")
    public String index(Model model) {
        String title = "动态的title";
        model.addAttribute("title", title);
        return "index";
    }

    @RequestMapping("/basic")
    public String basic(Model model) {
        UserVO user = new UserVO();
        user.setUserName("Tom");
        user.setAge(25);
        user.setCreateTime(new Date());
        user.setSex('1');
        user.setBoolVip(false);
        //数组形式的数据
        user.setClassesList(Arrays.asList("java","php","c#"));

        model.addAttribute("user", user);
        return "basic";
    }

}

7.新建web展示页面

(在resources/templates目录下新建index.html 和 basic.html 和 component.html的thymeleaf模板)

        (1)        index.html文件中的基本数据传递

<!DOCTYPE HTML>
<html  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title th:text="${title}">默认的标题</title>
</head>

<body>
<!--如果 th:text内无值,那么 默认显示p标签内的静态内容-->
<p th:text="${title}">默认的内容</p>
<p th:text="'拼接的静态内容'+${title}">默认的内容</p>
<!--可以直接使用 || 符号代替拼接动静态的数据-->
<p th:text="|拼接的静态内容${title}|">默认的内容</p>

</body>
</html>

        (2)        basic.html文件中的 对象形式的数据传递、组件(component)数据传递、JavaScript执行用法、条件判断和循环语句的使用

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Index Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <!--这里引入  css文件用thymeleaf的形式 用@ { }符号-->
    <link rel="stylesheet" th:href="@{app.css}"/>
</head>
<style>
    .active {
        color: red;
    }
</style>
<body>
<!--对于User对象;的属性,可以使用getXxx方法和直接 . 属性名-->
<p th:text="${user.userName}">用户名</p>
<p th:text="${user.getUserName()}">用户名</p>

<!--如果是对象形式,一直用user.方式很麻烦-->
<p th:text="${user.age}">年龄</p>
<p th:text="${user.userName}">用户名</p>
<!--那么我们使用 th:object的临时变量的形式包裹对象在div中;
用 符号 *{对象的属性名}   的方式那么我们使用其对象的属性的时候可以直接省略 user.-->
<div th:object="${user}">
    <p th:text="*{userName}">用户名</p>
    <p th:text="*{age}">年龄</p>

    <!-- if语句  可以判断此变量 是否true 则显示此标签内容 否则不显示-->
    <p th:if="*{boolVip}">男</p>
    <p th:if="!*{boolVip}">女</p>
</div>

<ul>
    <!--使用 th:each循环数组集合 并用临时的变量tag接收集合中的值,然后在取出tag的值-->
    <li th:each="tag:${user.classesList}" th:text="${tag}"></li>
</ul>

<!--追加css 中的.active设置的相关属性 -->
<!--th:classappend="active"-->
<!--${stat.last}?active 自定义一个stat命名,  指判断stat是否是最后一个,是true  则执行 css中 .active的属性设置-->
<ul>
    <li th:each="tag,stat:${user.classesList}"
        th:text="${tag}"
        th:classappend="${stat.last}?active"
    ></li>
</ul>

<!--switch语句case: :当user.sex的值是1的时候显示  男...; 符号 *表示: default其它显示为-->
<div th:switch="${user.sex}">
    <p th:case="1">男</p>
    <p th:case="2">女</p>
    <p th:case="*">无性别</p>
</div>
<div class="app">

</div>

<!--组件引入的使1.用fragment形式-->
<!--替换replace com1(也替换掉了 div标签和数据内容)-->
<div th:replace="~{component::com1}">
    replace com1...
</div>

<!--插入(保留原标签)insert com1 : (保留div标签, 同时在div标签内插入组件component的com1的标签和数据内容)-->
<div th:insert="~{component::com1}">
    insert  com1...
</div>

<!--2.以id的形式 insert com2(insert保留div标签和插入 com2的标签和数据内容)-->
<div th:insert="~{component::#com2}">
    insert com2...
</div>

</body>
<!--javascript动态渲染,如果/**/没有写动态值,就会显示{} 里面的静态值-->
<script th:inline="javascript">
    <!--输出user到控制台-->
    const user = /*[[${user}]]*/ {};
    console.log(user)
</script>
</html>

        (3)         component.html文件 这里使用fragment(碎片,片段)用于在basic.html文件引入component.html文件中的指定的标签+数据

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Index Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<!--fragment : 片段-->
<footer th:fragment="com1">
    com1
</footer>
<foot id="com2">
    com2
</foot>


</body>
</html>

        (4)         展示component组件的替换(th:replace)和插入(th:insert)的两种不同效果

               前端的原代码:

   

              浏览器检查(F12)显示的代码

 注意: 其实根据标签的id 的形式来替换(th:replace)或插入(th:insert)当前标签处更改标签和数据

        形式和fragment类似 ,代码如下:

    <!--根据 id的值,找到组件片段,进行替换(replace)当前片段,insert也如此-->
    <div th:replace="component::#com2">
       内容..
    </div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需求可以通过快速配置来开发。AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor 的文件持久化组件,以及一个高吞吐量的可靠事务日志组件。 Google地图JSP标签库 利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值