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>${(b.username)!}
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>${(b.username)!}
这样下面就可以取值判断了。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
