freeMaker null值处理

以下引用官方描述: 

引用

The FreeMarker template language doesn't know the Java language null at all. It doesn't have null keyword, and it can't test if something is null or not.


1.判断是否存在,通过exists关键字或者"??"运算符。都将返回一个布尔值 
user.name?exists 
user.name??

  1. <#if user.name?exists>

  2. //TO DO

  3. </#if>

  4.  
  5. <#if user.age??>

  6. //TO DO

  7. </#if>

  8.  


2.忽略null值 
假设前提:user.name为null 
${user.name},异常 
${user.name!},显示空白 
${user.name!'vakin'},若user.name不为空则显示本身的值,否则显示vakin 
${user.name?default('vakin')},同上 
${user.name???string(user.name,'vakin')},同上

! :default value operator,语法结构为:unsafe_expr!default_expr,

      比如 ${mouse!"No mouse."} 当mouse不存在时,返回default value;
      (product.color)!"red"  这种方式,能够处理product或者color为miss value的情况; 
       而product.color!"red"将只处理color为miss value的情况


?? : Missing value test operator ,测试是否为missing value 
       unsafe_expr?? :product.color??将只测试color是否为null
      (unsafe_expr)??:(product.color)??将测试product和color是否存在null 

--------------------------------------------------------------------------------------------------------------------------------------------------

freemarker中的null异常处理以及!与??的使用

以下引用官方描述: 

引用

The FreeMarker template language doesn't know the Java language null at all. It doesn't have null keyword, and it can't test if something is null or not.


1.判断是否存在,通过exists关键字或者"??"运算符。都将返回一个布尔值 
user.name?exists 
user.name??

 
  1. <#if user.name?exists>

  2. //TO DO

  3. </#if>

  4.  
  5. <#if user.age??>

  6. //TO DO

  7. </#if>

  8.  

2.忽略null值 
假设前提:user.name为null 
${user.name},异常 
${user.name!},显示空白 
${user.name!'vakin'},若user.name不为空则显示本身的值,否则显示vakin 
${user.name?default('vakin')},同上 
${user.name???string(user.name,'vakin')},同上

! :default value operator,语法结构为:unsafe_expr!default_expr,

      比如 ${mouse!"No mouse."} 当mouse不存在时,返回default value;
      (product.color)!"red"  这种方式,能够处理product或者color为miss value的情况; 
       而product.color!"red"将只处理color为miss value的情况


?? : Missing value test operator ,测试是否为missing value 
       unsafe_expr?? :product.color??将只测试color是否为null
      (unsafe_expr)??:(product.color)??将测试product和color是否存在null 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

freemarker中的null异常处理以及!与??的使用 2

如工程包含:

在user中我们有个角色,那么我们可以通过${user.role.rolename}获取当前用户的角色名称

问题来了当role没有赋值的时候,在jsp中${}表达式会直接忽略不显示,而freemarker会报异常,还是一大堆,freemarker就需要您手动去处理

如:

这的role是null因此报错了,而在freemarker中报的异常,排错还挺难的,一大顿,这里就需要我们手动去处理null,这里就要用到!

此刻的效果就跟jsp中的${}el表达式一样了,如果为空就不显示了,当在!后进行说明如:获取当前用户的角色:${user.role!"当前用户没有角色"}如果为空默认值就是后面的值

而当您写成这样的时候:<br/>获取当前用户的角色:${user.role.rolename!}  而role任然没值的时候依然会报错,而正确的方式<br/>获取当前用户的角色:${(user.role.rolename)!}

?? 用于判断是否为空


<#if user.role??>
 当前用户没有权限角色
 <#else>
 当前用户有权限角色
</#if>


${user.role???string}这里将结果以字符串的形式输出:true 或者false

${user.role???string("YES","NO")} 这判定用户权限角色为空

猜你喜欢

转载自blog.csdn.net/zxssoft/article/details/82796967