thymeleaf判断对象是否为空的相关逻辑处理

thymeleaf判断对象是否为空的相关逻辑处理thymeleaf判断对象是否为空有关逻辑处理在项目中,有时会遇到下面场景:添加页面和编辑页面共用一个页面,而通过后台传来的对象来判断提示用户是编辑页面还是添加页面,而编辑页面要使用这个对象的,添加页面用不到。在此记录下自己遇到的问题,看到了别人的博客才解决了@RequestMapping(path={“/add”,”edit”},method={RequestMethod.GET})publicStringaddOrEdit(Modelmodel,@RequestParam

大家好,又见面了,我是你们的朋友全栈君。

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,三目运算符等无法实现,目前来说这样可以实现

<!-- 正确写法可以实现 -->
<li class="layui-this" th:text="${post != null?'编辑页面':'添加页面'}"></li>
<!-- 无法实现 -->
<li class="layui-this" th:text="${post} ne 'null'?'编辑页面':'添加页面'"></li>

场景二
对于上述编辑页面,要使用后台数据进行下拉框的填充。而添加页面无需下拉框数据的填充。由于二者是公用一个页面,解决如下,记录一下

<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}"

  • 当在编辑页面时,下拉框时需要数据填充,并根据条件选中某一项数据
  • 当在添加页面时,是不需要数据的。此时就要下拉框取消选中
  • 这个 ? 就是为了判断对象是否为空,如果为空就不会渲染页面(下拉框选中)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145973.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 让新手给练了(2021年春节)

    1.概述对于一个建站新手来讲,最重要的莫过于2件事1.时间效率 2.性价比 换句话讲,对于非专业选手,在整个建站过程,如何省时省力,用相对简单的方式,花更少的钱建好网站是关键。基于上述,给大家带来一版适合新手的建站指南,供大家参考2.建站指南建站三大必备条件:域名+主机空间(虚机主机/服务器)+建站程序无论你是自己建站还是外包第三方建站,都需要具备这三个要素才能建网站。2.1.注册域名注册域名(域名就是人们常说的“网址”,好比一个网站的门牌号,不可或缺)注意事项:1.

    2022年4月13日
    33
  • Unix与Linux的历史

    Unix与Linux的历史

    2021年9月13日
    54
  • 算法刷题LeetCode中文版_leetcode100题

    算法刷题LeetCode中文版_leetcode100题算法题打卡:仅仅反转字母。没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。所以说,树倒了,没有一片雪花是无辜的

    2022年8月31日
    2
  • ios消息推送机制_iPhone消息推送

    ios消息推送机制_iPhone消息推送原文地址:http://www.apkbus.com/android-130195-1-5.html推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台“个推”(非广告 )。今天要

    2022年9月28日
    3
  • redis实现订单支付(延时队列)

    redis实现订单支付(延时队列)在电商网站中,我们经常会遇到订单支付,退货时间问题,那么怎么去处理那?设置定时任务,使用liunx中的at定时就可以轻松搞定,这里不在过多的研究使用redis延时队列:redis有一个数据类型,Sset叫做可以排序的集合(有序集合),为什么会是有序的那,是因为它与set相比有个属性叫score,sset就是这个属性(字段)来排序的,那如何实现延时队列那?实现方法:利用zset保存队列信息,score按照时间戳存放,再启动一个任务(线程),一直扫这个zset,判断当前时间和队列中的时间大小信息,如

    2022年6月5日
    160
  • phpMyAdmin完全安装配置步骤教程

    phpMyAdmin完全安装配置步骤教程phpMyAdmin完全安装配置步骤教程 phpMyAdmin就是一种MySQL数据库的管理工具,安装该工具后,即可以通过web形式直接管理MySQL数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面详细说明该工具的安装方法。在上一篇文章《phpMyAdmin的介绍》中,我们只介绍了使用phpMyAdmin的介绍以及phpMyAdm…

    2022年5月31日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号