freemarker size判空 为啥出现这个错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了freemarker size判空 为啥出现这个错误相关的知识,希望对你有一定的参考价值。

<#if (pager.list?size > 0)>
<div class="pagerBar">
<#-- <#if (pager.list?size > 0)> -->
<#if (pager.list?size > 0)>
<div class="pagerBar">
<#include "/WEB-INF/template/admin/pager.ftl" />
<#-- <#if currentUserAllRights.contains("cj_aa_bb_delete")> -->
<#if currentUserAllRights.contains("cj_aa_bb_delete")>
<#-- <input type="button" class="deleteButton" url="cj_aa_bb!delete.action" value="删 除" disabled hidefocus="true" /> -->
<input type="button" class="deleteButton" url="cj_aa_bb!delete.action" value="删 除" disabled hidefocus="true" />
</#if>
</div>
<#else>
<div class="noRecord">
没有找到任何记录!
</div>
</#if>
</div>
<#else>
<div class="noRecord">
没有找到任何记录!
</div>
</#if>

FreeMarker template error!

Expression pager.list is undefined on line 320, column 7 in WEB-INF/template/admin/agent/cj_aa_bb_list.ftl.
The problematic instruction:
----------
==> if-else [on line 320, column 1 in WEB-INF/template/admin/agent/cj_aa_bb_list.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression pager.list is undefined on line 320, column 7 in WEB-INF/template/admin/agent/cj_task_feedback_list.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134)
at freemarker.core.BuiltIn$sizeBI._getAsTemplateModel(BuiltIn.java:637)
at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.ComparisonExpression.isTrue(ComparisonExpression.java:111)
at freemarker.core.ParentheticalExpression.isTrue(ParentheticalExpression.java:66)

参考技术A 可能是pager这个类为空的情况出现的这个问题,当然也可能是pager.list为空造成的。

笨点的方法,你先去<#if pager.list?exists>判空去,如果这个也出错,那就是pager为空造成的了。
至于处理方式,你可以保证pager.list不会为空。也可以在判断长度之前先加空值判断。本回答被提问者和网友采纳

Java中list集合判空

1、如果想判断list是否为空,可以这么判断:

if(null == list || list.size() ==0 ){

  //为空的情况

}else{

  //不为空的情况

}

  

2、list.isEmpty() 和  list.size()==0  有啥区别呢

    答案:没有区别 。

      isEmpty()判断有没有元素,而size()返回有几个元素,

      如果判断一个集合有无元素 建议用isEmpty()方法.比较符合逻辑用法。

3、list!=null  跟  ! list.isEmpty()有什么区别?

      这就相当与,你要喝水,
      前面就是判断是不是连水杯都没有,
      后面就是判断水杯里面没有水,
      连盛水的东西都没有,
      这个水从何而来?
      所以一般的判断是
      

      if(list!=null && !list.isEmpty()){
        这个里面取list中的值
      }else{
        做其他处理
      }











以上是关于freemarker size判空 为啥出现这个错误的主要内容,如果未能解决你的问题,请参考以下文章

freemarker 表达式判空

在Struts2中的s:form,为啥我将theme设为ajax会报错?项目中也有freemarker.jar包啊

为啥这个错误会出现在命令提示符中?

JAVA中变量初始化之后, 为啥还要做判空处理?

FreeMarker语法

<#list> 中的 Iterable 出现 FreeMarker 错误