NonHashException: For “.“ left-hand operand: Expected a hash, but this has evaluated to a string

使用FreeMarker,遇到的问题:

For "." left-hand operand: Expected a hash, but this has evaluated to a string

出错代码:

<#list ObjectList as item>
<@assign b=item.a>
</@list>


<p>${(b.username)!}</p>

list中有个对象a,然后使用<#assign>设置全局变量,下面取值报错。

问题原因:

因为list中的对象a是null,经过自动转化后b成了字符串,所以下面的取值判断会报错:

For "." left-hand operand: Expected a hash, but this has evaluated to a string(wrapper: f.t.SimpleScalar)

FreeMarker 数据模型:存放了数据的数据结构,通常是一个Hash存储结构(如:HashMap)

此时的b不是hash是个string,所以报错了。

解决办法:

就是让b成为一个Hash,设置成'{}'

<#list ObjectList as item>
<@assign b=item.a!{}>//or (<@assign b=(item.a)!{}>)
</@list>


<p>${(b.username)!}</p>

这样下面就可以取值判断了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值