栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

解决方法整合-----The following has evaluated to null or missing

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决方法整合-----The following has evaluated to null or missing

文章目录
  • 问题描述
  • 方法整合
    • 1添加判断是否为空
    • 2命名规则要使用驼峰命名
    • 3未写get set方法

问题描述

servlet请求转发到freemarker中,访问时报错如下

Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

	----
	FTL stack trace ("~" means nesting-related):
	- Failed at: #list employee_list as emp  [in template "employee.ftl" at line 68, column 17]
	----

	Java stack trace (for programmers):
	----
	freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
		at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
		at freemarker.core.expression.assertNonNull(expression.java:233)
		at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:103)
		at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
		at freemarker.core.Environment.visit(Environment.java:330)
		at freemarker.core.Environment.visit(Environment.java:336)

源代码:

<#list employee_list as emp>
                <#list employee_list as emp>
                    
                        ${emp_index+1}
                        ${emp.empno?string("0")}
                        ${emp.ename}
                        ${emp.department}
                        ${emp.job}
                        ¥${emp.salary?string("0.00")}
                    

主要意思是该list为null或者不存在,我通过查阅总结了以下几个方法可以逐个排错

方法整合 1添加判断是否为空

源代码:

<#list employee_list as emp>
                <#list employee_list as emp>
                    
                        ${emp_index+1}
                        ${emp.empno?string("0")}
                        ${emp.ename}
                        ${emp.department}
                        ${emp.job}
                        ¥${emp.salary?string("0.00")}
                    

解决办法是:因为ftl是不能传入空值的。如果有空值 就会报这个的错误 :只要做一下判断就行了

<#if employee_list??>


修改之后代码

<#if employee_list??>
<#list employee_list as emp>
                <#list employee_list as emp>
                    
                        ${emp_index+1}
                        ${emp.empno?string("0")}
                        ${emp.ename}
                        ${emp.department}
                        ${emp.job}
                        ¥${emp.salary?string("0.00")}
                    


2命名规则要使用驼峰命名

one example:



two example:


3未写get set方法


你要访问的是servlet而不是直接访问ftl文件,你servlet不传入数据如何让ftl显示数据,我真的是太蠢了,脑袋短路了 fk。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号