Freemarker模板进行判空
文章目录
- freemarker判断对象是否为null
- 使用 ?? 操作符
- 使用 ?has_content 内建函数
- 直接使用 ! 操作符取反
- freemarker判断列表是否为空
freemarker判断对象是否为null
在 FreeMarker 模板引擎中,你可以使用内建的指令和条件判断来检测一个对象是否为 null。FreeMarker 提供了一些格外有用的内建函数和条件指令,比如 ??(用于检测是否为非空)以及条件指令 <#if> 等,来判断对象的状态。
以下是几种在 FreeMarker 模板中判断对象是否为 null 的常用方法:
使用 ?? 操作符
?? 是 FreeMarker 提供的用于检测一个变量是否存在且不为 null 的操作符。它通常用于简洁地处理可能为 null 的情况。
<#if myObject??>myObject 不是 null
<#else>myObject 是 null
</#if>
使用 ?has_content 内建函数
?has_content 可以用来检测一个变量是否有内容,但对于 null 值的检测,?? 更为直接和适合。不过,在某些情况下,?has_content 也可以用来达到类似的效果。
<#if myObject?has_content>myObject 有内容(不是 null 且不是空字符串等)
<#else>myObject 没有内容(可能是 null)
</#if>
直接使用 ! 操作符取反
你也可以使用逻辑非操作符 ! 来检测一个对象是否为 null,但这通常结合其他条件使用,因为 ! 是对布尔值取反。
<#if !myObject??>myObject 是 null
<#else>myObject 不是 null
</#if>
注意事项
在 FreeMarker 中,未定义的变量和 null 是有区别的。未定义的变量在尝试访问时会抛出异常,而 null 值则可以通过上述方法安全地检测。
确保在使用变量之前,已经正确地初始化和传递了这些变量到你的模板中,以避免处理未定义变量的错误。
通过上述方法,你可以在 FreeMarker 模板中有效地判断对象是否为 null 并根据判断结果执行相应的模板逻辑。
freemarker判断列表是否为空
在 FreeMarker 模板语言中,你可以使用内建的指令和条件判断来检查一个列表是否为空。FreeMarker 提供了一些内建的条件指令,比如 <#if> 指令,可以用来进行条件判断。
以下是一个简单的例子,演示如何在 FreeMarker 模板中检查列表是否为空:
<#-- 假设我们有一个名为 "myList" 的列表变量 -->
<#assign myList = []><#-- 检查列表是否为空 -->
<#if myList?size == 0><p>列表是空的</p>
<#else><p>列表不是空的</p><#-- 如果列表不为空,可以遍历列表 --><ul><#list myList as item><li>${item}</li></#list></ul>
</#if>
在这个例子中,我们使用 myList?size 来获取列表的大小,然后通过判断大小是否等于 0 来确定列表是否为空。如果列表为空,模板将输出 “列表是空的”;否则,将输出 “列表不是空的”,并遍历列表显示其中的每个元素。
请确保在使用这个模板之前,已经将列表变量(在这个例子中是 myList)传递给 FreeMarker 模板处理器。
相关文章:
Freemarker模板进行判空
文章目录 freemarker判断对象是否为null使用 ?? 操作符使用 ?has_content 内建函数直接使用 ! 操作符取反 freemarker判断列表是否为空 freemarker判断对象是否为null 在 FreeMarker 模板引擎中,你可以使用内建的指令和条件判断来检测一个对象是否为 null。Free…...
C++ const关键字(八股总结)
作用 const修饰符用来定义常量,具有不可变性。 修饰变量,说明该变量不可以被改变;修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer&…...
Linux 清楚历史命令
在 Linux 中,执行完命令后,如果你想清除终端屏幕上的内容,可以使用以下几种方法: 1. 使用 clear 命令 clear 是 Linux 中最常用的清除屏幕命令。它会将终端屏幕清空,并将光标移动到屏幕左上角。 bash clear 2. 使用快…...

服务器双网卡NCCL通过交换机通信
1、NCCL变量设置 export CUDA_DEVICE_MAX_CONNECTIONS1 export NCCL_SOCKET_IFNAMEeno2 export NCCL_IB_DISABLE0 #export NCCL_NETIB export NCCL_IB_HCAmlx5_0,mlx5_1 export NCCL_IB_GID_INDEX3 export NCCL_DEBUGINFOGPUS_PER_NODE4MASTER_ADDR192.168.1.2 MASTER_PORT600…...

Redis哨兵(sentinel)
是什么 吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 哨兵的作用 1、监控redis运行状态,包括master和slave 2、当master down机,能自动将slave切换成新master 能干嘛…...

小白学Pytorch
小白学Pytorch 发现一个比较好的教程,对于自己来说比较合适,适合从零开始的教程。 1、搭建一个简单的网络 https://www.cnblogs.com/PythonLearner/p/13587092.html 搭建网络这步说的比较清楚: 我们使用nn包中的Sequential搭建网络&#…...

ros2笔记-2.5.3 多线程与回调函数
本节体验下多线程。 python示例 在src/demo_python_pkg/demo_python_pkg/下新建文件,learn_thread.py import threading import requestsclass Download:def download(self,url,callback):print(f线程:{threading.get_ident()} 开始下载:{…...
第5章:Go语言错误处理和异常
第5章:Go语言错误处理和异常 5.1 错误类型基础 5.1.1 error接口 // error接口定义 type error interface {Error() string }// 自定义错误 type CustomError struct {Message stringCode int }func (e *CustomError) Error() string {return fmt.Sprintf(&quo…...
题库刷题知识点总结
算法与机器学习相关 支持向量机:是一种有监督的机器学习算法,用于分类和回归任务。它通过寻找一个最优超平面来将不同类别的数据点分开,最大化两类数据点到超平面的间隔,具有良好的泛化能力和抗噪声能力。机器学习:是…...
GraphRAG:LLM之Graphrag接入milvus
前言 微软目前的graphrag更像个demo,数据量大的时候不是很友好的啊,所以将milvus接入了graphrag,看完这篇文章,其他数据库接入应该也没问题 注:这篇文章只是在search的时候接入进来,index过程或者说整个流…...

adb使用及常用命令
目录 介绍 组成 启用adb调试 常用命令 连接设备 版本信息 安装应用 卸载应用 文件操作 日志查看 屏幕截图和录制 设备重启 端口转发 调试相关 设置属性 设备信息查询 获取帮助 模拟输入 介绍 adb全称为 Android Debug Bridge(Android调试桥),是 A…...

omnipeek分析beacon帧
omnipeek查询设备发送beacon时同一信道两个beacon发送间隔 目录 用例要求分析抓包数据 1.用例要求 Beacon帧发送频率符合规范要求。参数-【同一个信道两个beacon发送间隔不能超过100ms】 2.分析抓包数据 打开becon.pkt文件(用omnipeek工具提前抓取包)…...
Java数组问题
题目2: 定义一个数组,存储1,2,3,4,5,6,7,8,9,10 遍历数组得到的每一个元素,统计数组里面一共多少个能被3整除的数字 package com.s…...
salesforce 可以为同一个简档的同一个 recordtype 的对象设置多种页面布局吗
在 Salesforce 中,对于同一个 Record Type(记录类型),默认情况下,每个 Profile(用户简档) 只能分配一个 Page Layout(页面布局)。也就是说,页面布局的分配规则…...
使用vue项目中,使用webpack模板和直接用vue.config来配置相关插件 区别是什么,具体有哪些提现呢
在 Vue 项目中,使用 Webpack 模板 和 vue.config.js 来配置相关插件的主要区别在于配置的复杂度、灵活性和易用性。以下是两者的详细对比: 1. Webpack 模板 Webpack 模板是 Vue CLI 早期版本(如 Vue CLI 2.x)中提供的项目初始化模…...

五、包图
包图 、基本概念 概念: 用来描述模型中的包和其所含元素的组织方式的图,是维护和控制系统总体结构的重要内容。 包可以把所建立的各种模型组织起来,形成各种功能或用途的模块,并可以控制包中元素的可见性以及描述包之间的依赖…...

关于重构一点简单想法
关于重构一点简单想法 当前工作的组内,由于业务开启的时间正好处于集团php-》go技术栈全面迁移的时间点,组内语言技术栈存在:php、go两套。 因此需求开发过程中通常要考虑两套技术栈的逻辑,一些基础的逻辑也没有办法复用。 在这…...

kafka使用以及基于zookeeper集群搭建集群环境
一、环境介绍 zookeeper下载地址:https://zookeeper.apache.org/releases.html kafka下载地址:https://kafka.apache.org/downloads 192.168.142.129 apache-zookeeper-3.8.4-bin.tar.gz kafka_2.13-3.6.0.tgz 192.168.142.130 apache-zookee…...
GAN对抗生成网络(二)——算法及Python实现
1 算法步骤 上一篇提到的GAN的最优化问题是,本文记录如何求解这一问题。 首先为了表示方便,记,这里让最大的可视作常量。 第一步,给定初始的,使用梯度上升找到 ,最大化。关于梯度下降,可以参考笔者另一篇…...
并发线程(21)——线程池
文章目录 二十一、day211. 线程池实现1.1 完整代码1.2 解释 二十一、day21 我们之前在学习std::future、std::async、std::promise相关的知识时,通过std::promise和packaged_task构建了一个可用的线程池,可参考文章:并发编程(6&a…...

git引用概念(git reference,git ref)(简化对复杂SHA-1哈希值的管理)(分支引用、标签引用、HEAD引用、远程引用、特殊引用)
文章目录 **引用的本质**1. **引用是文件**2. **引用的简化作用** **引用的类型**1. **分支引用(Branch References)**2. **标签引用(Tag References)**3. **HEAD 引用**4. **远程引用(Remote References)*…...
Redis——主从哨兵配置
目录 基础概念 一、核心原理 二、核心特性 三、技术意义与应用价值 四、典型应用场景 案例部署 一、主从复制配置命令 二、哨兵模式部署命令 关键注意事项 基础概念 一、核心原理 内存存储与高性能 Redis 所有数据存储于内存中&…...

基于单片机的病房呼叫系统(源码+仿真)
该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入,病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等,这些信息通过路由节点发…...

分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
一、作者介绍:六年算法开发经验、AI 算法经理、阿里云专家博主。擅长:检测、分割、理解、大模型 等算法训练与推理部署任务。 二、数据集介绍: 质量高:高质量图片、高质量标注数据,吐血标注、整理,可以作为…...
Qt Quick Test模块功能及架构
Qt Quick Test 是专门为测试 QML 应用程序设计的模块,在 Qt 6.0 中得到了显著增强。 一、主要功能/使用方法 核心功能概述 QML 单元测试框架 提供完整的 QML 测试环境 支持测试用例组织和执行 包含 QML 断言函数和测试结果收集 测试类型支持 组件功能测试 用…...
【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
以下是 HarmonyOS 5 拍摄美化功能的简洁介绍,整合核心能力与技术亮点: 一、AI 影像创新 AI 魔法移图 系统级图像分层技术实现人物/物体自由拖拽、缩放与复制,突破传统构图限制。自动分离主体与背景,一键生成错位创意照&…...

Facebook接入说明
Facebook 原生 Messenger 聊天消息接入到一洽对话中 1、创建 Facebook 主页 进入 https://www.facebook.com/pages/create 页面根据提示创建主页(如果已经有待用主页,可跳过) 2、授权对话权限 1、向您的一洽负责人获取 Facebook 授权链接 2、…...
计算机二级Python考试的核心知识点总结
以下是计算机二级Python考试的核心知识点总结,结合高频考点和易错点分类整理: 1. **数据类型与运算** ▷ 不可变类型:int, float, str, tuple(重点区分list与tuple) ▷ 运算符优先级:** > * /…...
整数的字典序怎么算
在Python中,字典序(lexicographical order)通常指的是按照字符串的字典顺序进行比较或排序。对于整数来说,字典序可以理解为将整数转换为字符串后进行比较的顺序。 计算整数的字典序 要计算整数的字典序,可以按照以下…...
C++11 Token Bucket (令牌桶)算法的锁无实现及应用
Token Bucket(令牌桶)算法是一种在流量控制和资源分配领域被广泛应用的技术。它通过约束数据传输速率或任务执行频率,确保系统在资源有限的情况下,能够稳定、高效地运行,避免因突发流量或任务积压而导致的性能下降甚至…...