freemaker中空值,null值,不存在的属性的判断

freemaker中的“!”和“??”的区别

第一种情况:属性不存在

     !--freemaker

<label class="lab-item">测试一下!和??:
</label>${noExit!'bucunzai'}
效果:

noExit 是在Java服务端不存在的属性。

!判断了在不存在的时候使用默认值。

      ??--freemaker

 <label >??测试不存在的属性:</label>
<#if noExit ?? >	
	<label class="lab-item">测试一下!和??:
	</label>${noExit!'bucunzai'}
</#if>

效果:


结论:属性不存在,??直接判断为false。!也是判断为false,所以采用了默认值。



第二种情况:属性存在,但是不赋值

Java中的数据:

dataMap.put("noExit",null);

      !--freemaker

<label class="lab-item">测试一下!和??:
</label>${nullexit!'bucunzai'}

效果:

      ??--freemaker

 <p class="p12 p-item">
	<label  class="lab-item" >??测试不存在属性:</label> ----  
</p>  
<#if nullexit ?? >	
	<label class="lab-item">测试一下!和??:
	</label>${nullexit!'bucunzai'}
</#if> 

效果:


结论:属性值为null,??和!是一样的判断为不存在。



第三种:属性的是为空

Java:

dataMap.put("blankExit","");

     !--??--freemaker

<#if blankExit ?? >	
	<label class="lab-item">测试一下!和??:
	</label>${blankExit!'bucunzai'}
</#if> 
效果:


结论:属性值为空(不占用空格),??和!是当做正常值来进行判断的。



总结论:

??和!判断属性或者属性的值是否存在是一样的用途。不同之处在于“!”可以给出默认值。

freemaker在线手册中明确之处了:

这部分对程序员而言: 一个不存在的变量和一个是 null 值的变量, 对于FreeMarker来说是一样的,所以这里所指的"丢失"包含这两种情况。

来自 <http://freemarker.foofun.cn/dgui_quickstart_template.html


对于为空的情况,我采用这种方式来进行判断:

 <#if (headuser.photo)??>
	 <#if (headuser.photo)!="">  
 	 </#if>
</#if>

在补充一点:

${noExit!}和${noExit!‘’}作用是一样的,如果不存在都给一个默认为空的值。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值