freemarker如何判空容错

简介:

freemarker如何判空容错呢? 

freemark是什么? 
freemark是Java后台的模板语言 
如果模板使用vm中没有的变量就会报错 
怎么办呢? 
针对使用场景分为两种:

(1)用于页面显示

 

Html代码   收藏代码
  1. <span class="info-date">${old_order_startTime!'--'}  

 使用感叹号,如果没有设置值,就使用感叹号后面的”–”为默认值 

 

实例: 

 

 

(2)用于if判断

 

Html代码   收藏代码
  1. <#if orderInfo.couponList??>  
  2.                 <#list orderInfo.couponList as ite>  
  3.                     <p>- 红包:&nbsp;  
  4.                         ¥${ite.couponPay}</p>  
  5.                 </#list>  
  6.             </#if>  

 使用形式概览:unsafe_expr??或(unsafe_expr)??

 

这个操作符告诉我们一个值是否存在。基于这种情况,结果是 true 或 false。 示例如下,假设并没有名为 mouse 的变量:

 

Html代码   收藏代码
  1. <#if mouse??> Mouse found  
  2.   
  3. <#else>  
  4.   
  5. No mouse found </#if>  
  6.   
  7. Creating mouse...  
  8.   
  9. <#assign mouse = "Jerry"> <#if mouse??>  
  10.   
  11. Mouse found <#else>  
  12.   
  13. No mouse found </#if>  

 输出为: 

 

No mouse found

Creating mouse…

Mouse found 
访问非顶层变量的使用规则和默认值操作符也是一样的,即 product.color??和 (product.color)?? 

(3)判断时也可以使用默认值



 

 

Html代码   收藏代码
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta charset="UTF-8">  
  5. <title>freemarker demo</title>  
  6. </head>  
  7. <body>  
  8. ${username} <br />  
  9. ${age}<br />  
  10. ${sex!} <br>  
  11. <#if (sex!23) ==23 >  
  12. ok  
  13. <#else>  
  14. no  
  15. </#if>  
  16. </body>  
  17. </html>  

 

相关文章
|
20天前
|
Java 开发者 Spring
深入解析:Spring AOP的底层实现机制
在现代软件开发中,Spring框架的AOP(面向切面编程)功能因其能够有效分离横切关注点(如日志记录、事务管理等)而备受青睐。本文将深入探讨Spring AOP的底层原理,揭示其如何通过动态代理技术实现方法的增强。
49 8
|
2月前
|
监控 Java 开发者
BeanPostProcessor:Spring框架的灵活扩展机制
【10月更文挑战第4天】在Spring框架中,BeanPostProcessor接口是一个非常重要的扩展点,它允许开发者在Spring容器实例化、依赖注入以及初始化Bean的过程中插入自定义逻辑。
65 0
|
3月前
|
XML 存储 Java
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
|
2月前
|
Java 程序员 API
《Spring Boot应用进阶:打造优雅的错误处理机制与全局异常拦截器》
《Spring Boot应用进阶:打造优雅的错误处理机制与全局异常拦截器》
130 0
|
5月前
|
Java Spring 容器
Spring循环依赖问题之两个不同的Bean A,导致抛出异常如何解决
Spring循环依赖问题之两个不同的Bean A,导致抛出异常如何解决
|
SQL
mybatis-plus逻辑删除简单实现
mybatis-plus逻辑删除简单实现
77 0
|
SQL 缓存 Java
Mybatis源码剖析之插件interceptor执行原理
mybatis通过插件 对(Executor、StatementHandler、ParameterHandler、ResultSetHandler) 这四个 核心对象创建代理进行拦截 对mybatis来说插件就是拦截器,用来增强核心对象的功能,增强功能本质上是借助于底层的 动态代理实现的,换句话说,MyBatis中的四大对象都是代理对象
172 0
|
Java 开发者 Spring
Spring断言工具类 “Assert” 的基本操作!
Spring断言工具类 “Assert” 的基本操作!
284 0
Spring断言工具类 “Assert” 的基本操作!
|
消息中间件 缓存 运维
Spring源码解析(十)分析一个Spring循环引用失败的问题
1前言: 之前我们有分析过Spring是怎么解决循环引用的问题,主要思路就是三级缓存;Spring在加载beanA的时候会先调用默认的空构造函数(在没有指定构造函数实例化的前提下)得到一个空的实例引用对象,这个时候没有设置任何值,但是Spring会用缓存把它给提前暴露出来,让其他依赖beanA的bean可以持有它提前暴露的引用;比如 a 依赖b ,b依赖a,并且他们都是通过默认方法实例化,那么简单流程是这样的: 1. ioc实例化a,a提前暴露自己的,然后填充属性值,在填充属性值的时候发现有个对象b,这个时候去容器里面取到b的引用,发现b还没有被创建,那么就走实例化b的流程;