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>

${(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)!{}>)

${(b.username)!}

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部