Thymeleaf注意事项

导航栏作为公共页面

1. 公共部分提取

<head th:fragment="head(title)"> //提取Html头,以及css,js且让title动态显示
        <title th:text="${title}">title</title>
<header class="main-header" th:fragment="top">//提取不需要变化的公共部分
<aside class="main-sidebar" th:fragment="sider(key)">//提取导航栏部分,使用(key)来为后续导航栏在对应页面进行高亮处理

2. 公共页面引入

<head th:replace="temp::head('管理项目')">  //引入Html头后,传入当前页面title
 <header th:replace="temp::top"> //引入公共不需要变化的部分
 <aside th:replace="temp::sider(admin_project_project)"></aside>  //引入导航栏,并进行传入key值,为后续高亮处理做铺垫

3.Thymeleaf的三个不同引入方法的区别

属性 特点
th:replace 不保留自己的主标签,保留th:fragment的主标签
th:include 保留自己的主标签,不保留th:fragment的主标签
th:insert 保留自己的主标签,也保留th:fragment的主标签

导航栏在对应页面高亮处理

<li class="treeview" th:class="${#strings.startsWith(key,'admin_project_')} ? 'active': ''">
                <a href="#">
                    <i class="fa fa-firefox"></i><span>项目模块管理</span>
                    <span class="pull-right-container">
                        <i class="fa fa-angle-left pull-right"></i>
                    </span>
                </a>
                <ul class="treeview-menu">
                    <li th:class="${key == 'admin_project_project' ? 'active' : ''}">
                        <a th:href="@{/admin/project/project}">
                            <i class="fa fa-circle-o"></i>项目管理
                        </a>
                    </li>
                </ul>
                <ul class="treeview-menu">
                    <li th:class="${key == 'admin_project_module' ? 'active' : ''}">
                        <a th:href="@{/admin/project/module}">
                            <i class="fa fa-circle-o"></i>模块管理
                        </a>
                    </li>
                </ul>
            </li>

Thymeleaf注意点

1. 配置非严格的语法,thymeleaf 有严格的语法限制,会极大程度限制你的发挥,所以先把这个模板的严格去掉

<!--避坑包 -->
<dependency>
          <groupId>net.sourceforge.nekohtml</groupId>
          <artifactId>nekohtml</artifactId>
          <version>1.9.22</version>
      </dependency>

2.在application.properties中配置(可选)

<!-- 关闭thymeleaf缓存 开发时使用 否则没有实时画面-->
spring.thymeleaf.cache=false
## 检查模板是否存在,然后再呈现
spring.thymeleaf.check-template-location=true
#Content-Type值
spring.thymeleaf.content-type=text/html
#启用MVC Thymeleaf视图分辨率
spring.thymeleaf.enabled=true
## 应该从解决方案中排除的视图名称的逗号分隔列表
##spring.thymeleaf.excluded-view-names=
#模板编码
spring.thymeleaf.mode=LEGACYHTML5
# 在构建URL时预先查看名称的前缀
spring.thymeleaf.prefix=classpath:/templates/
# 构建URL时附加查看名称的后缀.
spring.thymeleaf.suffix=.html

3.Thymeleaf书写

<!--JS代码怎么写,必须 加上 th:inline-->
<script type="text/javascript" th:inline  ="javascript">
**********************
</script >
<!--怎么将 springBoot中的 model 存储的值取出来-->
html:<span th:text = ${address}}></span>
JS: var urls = [[${address}]] ;
<!--怎么写URL链接-->
<a th:href="@{/admin/project/project}"></a>
<!--如果你URL中有参数,是页面初始化传入的-->
<a th:href="@{/admin/project/projectId(id = ${projectId})}"></a>

4.Select数据回显选中

<div class="form-group">
         <label>性别</label>
         <select class="form-control" th:value="${session.user.sex}"  name="sex">
           <option class="form-control" th:selected="${session.user.sex == '男'}" value="男">男</option>
           <option class="form-control" th:selected="${session.user.sex == '女'}" value="女">女</option>
         </select>
 </div>
<!--th:field="*{Ygdly.dlrlx}"这个代表要匹配的数-->
<select style='width: 148.15px' name="dlrlx" th:field="*{Ygdly.dlrlx}">
    <option th:each="dlrlxitem : ${dlrlxs}" th:text="${dlrlxitem.mc}" th:value="${dlrlxitem.bm}"></option>
</select>

5. Thymeleaf在js中从modle取值

totalPages:[[${pageInfo.pages}]],   //总页数

6.遇到的一个问题

<!--以这种方式书写JS和css路径,出现GetMapper("/user")正常加载页面,但是GetMapper("/user/user")出现静态资源无法加载的状况-->
<link rel="stylesheet" href="../static/bootstrap/css/bootstrap.min.css" th:href="@{bootstrap/css/bootstrap.min.css}">
<!--改为这种引入的书写方式便没有问题了-->
<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容

  • Thymeleaf简介 前面的例子我们使用的视图技术主要是JSP。JSP的优点是它是Java EE容器的一部分,几...
    乐百川阅读 8,989评论 2 56
  • 开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了。Sp...
    Coding小聪阅读 223,396评论 20 164
  • 一. 什么是Thymeleaf Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎。Thyme...
    低调的微胖阅读 65,715评论 8 69
  • 1、霾重,12层望出去的天都是云雾缭绕的感觉。 2、工作中的沟通成本确实是最高的。跟每个人说话的方式、别人推诿你后...
    郭姓阅读 125评论 0 1
  • 总觉得书代替我们自己经历不同的人生,感受不同的人和事,然后被有心之人写下来,有缘之人用心读过后丰富了自我。 只有读...
    芜笙未笙阅读 184评论 0 0