最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于thymeleaf判斷對象是否為空的相關邏輯處理

 更新時間:2022年10月12日 14:29:15   作者:桐花思雨  
這篇文章主要介紹了關于thymeleaf判斷對象是否為空的相關邏輯處理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

thymeleaf 判斷對象是否為空有關邏輯

場景一

在項目中,有時會遇到下面場景:

添加頁面和編輯頁面共用一個頁面,而通過后臺傳來的對象來判斷提示用戶是編輯頁面還是添加頁面,而編輯頁面要使用這個對象的,添加頁面用不到。在此記錄下自己遇到的問題,看到了別人的博客才解決了

@RequestMapping(path = {"/add", "edit"}, method = {RequestMethod.GET})
public String addOrEdit(Model model, @RequestParam(name = "postId", required = false) Long postId) {
? ? if (!StringUtils.isEmpty(postId)) {
? ? ? ? ? ? UserLoginResult userLoginResult = (UserLoginResult) SecurityUtils.getSubject().getPrincipal();
? ? ? ? ? ? PostVO postVO = postService.findOnePostVO(postId);
? ? ? ? ? ? Assert.isTrue(postVO != null, "該帖子已被刪除");
? ? ? ? ? ? Assert.isTrue(postVO.getUserId().longValue() == userLoginResult.getId().longValue(), "沒有權限操作");
? ? ? ? ? ? model.addAttribute("post", postVO);
? ? ? ? }
? ? ? ? List<Category> categoryList = categoryService.findCategoryAllOfName();
? ? ? ? model.addAttribute("list", categoryList);
? ? ? ? return "jie/add";
? ? }
}

前后使用了 th:if,th:switch,三目運算符等無法實現(xiàn),目前來說這樣可以實現(xiàn)

<!-- 正確寫法可以實現(xiàn) -->
<li class="layui-this" th:text="${post != null?'編輯頁面':'添加頁面'}"></li>
<!-- 無法實現(xiàn) -->
<li class="layui-this" th:text="${post} ne 'null'?'編輯頁面':'添加頁面'"></li>

場景二

對于上述編輯頁面,要使用后臺數(shù)據(jù)進行下拉框的填充。而添加頁面無需下拉框數(shù)據(jù)的填充。由于二者是公用一個頁面,解決如下,記錄一下

<div class="layui-input-block">
?? ?<select lay-verify="required" name="categoryId" lay-filter="column">
? ? ?? ?<option></option>
? ? ?? ?<!-- 此處遍歷 -->
? ? ? ? <option th:each="category:${categoryList}" th:value="${category.id}"
? ? ? ? ?? ?th:text="${category.categoryName}"
? ? ? ? ?? ?<!-- 加了這個 ‘?' 用于判斷 -->
? ? ? ? ? ? th:selected="${category.id} == ${post?.categoryId}">
? ? ? ? </option>
? ? </select>
</div>
th:selected="${category.id} == ${post?.categoryId}"

當在編輯頁面時,下拉框時需要數(shù)據(jù)填充,并根據(jù)條件選中某一項數(shù)據(jù)

當在添加頁面時,是不需要數(shù)據(jù)的。此時就要下拉框取消選中

這個 ? 就是為了判斷對象是否為空,如果為空就不會渲染頁面(下拉框選中)

Thymeleaf基礎語法

一、引用命名空間

要使用Thymeleaf,則需要先加入依賴,然后在模板文件中引用命名空間如下:

<html lang="zh" xmlns:th="http://www.thymeleaf.org">

二、常用th標簽

1. th:text

<div th:text="${name}">name</div>

? 它用于顯示控制器傳入的name值

? 如果name不存在,要顯示默認值,則使用一下代碼

<span th:text="${name}?:'默認值'"></span>

2. th:object

它用于接收后臺傳過來的對象,如以下代碼:

<th:obejct="${user}">

3. th:action

它用來指定表單提交地址

<form th:action="@{/article}+${article.id}" method="post"></form>

4. th:value

它用對象將id的值替換為value的屬性

<input type="text" th:value="${article.id}" name="id" />

5. th:field

它用來綁定后臺對象和表單數(shù)據(jù)。Thymeleaf里的“th:field”等同于“th:name”和“th:value”,其具體使用方法見以下代碼

<input type="text" id="title" name="title" th:field="${article.title}" />
<input type="text" id="title" name="title" th:field="*{title}" />

三、Thymeleaf中的URL寫法

Thymeleaf是通過語法@{…}來處理URL的,需要使用“th:href”和“th:src”等屬性,如以下代碼

<a th:href="@{http://eg.com}/" rel="external nofollow" >絕對路徑</a>
<a th:href="@{/}" rel="external nofollow" >相對路徑</a>
<a th:href="@{css/bootstrap.min.css}/" rel="external nofollow" >默認訪問static下的css文件夾</a>

四、用Thymeleaf進行條件求值

Thymeleaf通過“th:if”和“th:unless”屬性進行條件判斷。在下面的例子中,<a>標簽只有在“th:if”中的條件成立時才顯示。

<a th:href="@{/login}" rel="external nofollow"  rel="external nofollow"  th:if=${session.user == null}>Login</a>

“th:unless”與“th:if”恰好相反——只有當表達式中的條件不成立時才顯示其內容。在下方代碼中,如果用戶session為空,則不顯示登錄鏈接

<a th:href="@{/login}" rel="external nofollow"  rel="external nofollow"  th:unless=${session.user == null}>Login</a>

五、Switch

Thymeleaf支持Switch結構,如以下代碼

<div th:switch="${user.role}">
? ? <p th:case="admin">管理員</p>
? ? <p th:case="vip">vip會員</p>
? ? <p th:case="*">普通會員</p>
</div>

上述代碼的意思是:如果用戶角色(role)是admin,則顯示“管理員”;如果用戶角色是vip,則顯示“vip會員”;如果都不是,則顯示“普通會員”,即使用“*”表示默認情況。

六、Thymeleaf中的字符串替換

有時需要對文字中的某一處地方進行替換,可以通過字符串拼接操作完成,如以下代碼:

<span th:text="'歡迎您,' + ${name} + '!'"></span>

? 或,

<span th:text="|歡迎您,${name}!|"></span>

? 上面的第2種形式限制比較多,|…|中只能包含變量表達式${…},不能包含其它常量、條件表達式等

七、Thymeleaf的運算符

1. 算數(shù)運算符

如果要在模板中進行算數(shù)運算,則可以用下面的寫法。以下代碼表示求加和取余運算

<span th:text="1+3">1 + 3</span><br/>
<span th:text="9%2">9 % 2</span><br/>

2. 條件運算符th:if

下方代碼演示了if判斷,表示:如果從控制器傳來的role值等于"admin",則顯示”歡迎您,管理員“;如果role值等于”vip“,則顯示”歡迎您,vip會員“

<div th:if="${role} eq admin">
? ? <span>歡迎您,管理員</span>
</div>
<div th:if="${role} eq vip">
? ? <span>歡迎您,vip會員</span>
</div>

eq是判斷表達式,代表等于。其它的判斷表達式如下

  • gt:大于
  • ge:大于或等于
  • eq:等于
  • lt:小于
  • le:小于或等于
  • ne:不等于

3. 判斷空值

判斷不為空:

<sapn th:if="${name} != null">不為空</span>

判斷為空

<sapn th:if="${name} == null">為空</span>

八、Thymeleaf公用對象

? Thymeleaf還提供了一系列公用(utility)對象,可以通過”#“直接訪問,如以下用法:

格式化時間

<td th:text="${#date.format(item.createTime,'yyyy-MM-dd HH:mm:ss')}">格式化時間</td>

判斷是不是空字符串

<span th:if="${#strings.isEmpty(name)}">空的</span>

是否包含(分大小寫)

<span th:if="${#strings.contains(name,'long')}">包含long</span>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • IntelliJ IDEA設置代碼的快捷編輯模板Live Templates

    IntelliJ IDEA設置代碼的快捷編輯模板Live Templates

    今天小編就為大家分享一篇關于IntelliJ IDEA設置代碼的快捷編輯模板Live Templates,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java Spring注解之@Async的基本用法和示例

    Java Spring注解之@Async的基本用法和示例

    Spring為任務調度與異步方法執(zhí)行提供了注解支持,通過在方法上設置@Async注解,可使得方法被異步調用,下面這篇文章主要給大家介紹了關于Java Spring注解之@Async的基本用法和示例,需要的朋友可以參考下
    2022-03-03
  • Java中的Graphics2D類基本使用教程

    Java中的Graphics2D類基本使用教程

    這篇文章主要介紹了Java中的Graphics2D類基本使用教程,Graphics2D類較之Graphics類中的功能更加專業(yè),需要的朋友可以參考下
    2015-10-10
  • Spring?Boot中@Validated注解不生效問題匯總大全

    Spring?Boot中@Validated注解不生效問題匯總大全

    這篇文章主要給大家介紹了關于Spring?Boot中@Validated注解不生效問題匯總的相關資料,@Validated注解是Spring框架中的一個注解,用于在方法參數(shù)上添加參數(shù)校驗規(guī)則,需要的朋友可以參考下
    2023-07-07
  • Java如何實現(xiàn)圖像的卷積效果

    Java如何實現(xiàn)圖像的卷積效果

    這篇文章主要介紹了Java如何實現(xiàn)圖像的卷積效果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Springboot結合rabbitmq實現(xiàn)的死信隊列

    Springboot結合rabbitmq實現(xiàn)的死信隊列

    為了保證訂單業(yè)務的消息數(shù)據(jù)不丟失,需要使用到RabbitMQ的死信隊列機制,本文主要介紹了Springboot結合rabbitmq實現(xiàn)的死信隊列,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 詳解Spring Cloud Zuul網(wǎng)關修改為短連接方法

    詳解Spring Cloud Zuul網(wǎng)關修改為短連接方法

    本文主要介紹了詳解Spring Cloud Zuul網(wǎng)關修改為短連接方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • mybatis-generator自動生成dao、mapping、bean配置操作

    mybatis-generator自動生成dao、mapping、bean配置操作

    這篇文章主要介紹了mybatis-generator自動生成dao、mapping、bean配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java中List集合對象去重及按屬性去重的8種方法

    Java中List集合對象去重及按屬性去重的8種方法

    這篇文章主要介紹了Java中List集合對象去重及按屬性去重的8種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一地的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 利用java實現(xiàn)一個客戶信息管理系統(tǒng)

    利用java實現(xiàn)一個客戶信息管理系統(tǒng)

    這篇文章主要給大家介紹了關于利用java實現(xiàn)一個客戶信息管理系統(tǒng)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論

周口市| 枣强县| 海城市| 丘北县| 旬阳县| 奎屯市| 临沭县| 新干县| 合肥市| 台安县| 新泰市| 保靖县| 宁波市| 丰城市| 五莲县| 辽宁省| 武陟县| 桃园市| 慈溪市| 临城县| 满城县| 芒康县| 澎湖县| 恩平市| 绥芬河市| 呼玛县| 许昌市| 九龙县| 武汉市| 大化| 濮阳县| 腾冲县| 衡阳市| 右玉县| 大石桥市| 河间市| 平定县| 三亚市| 濉溪县| 射阳县| 阳信县|