使用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,设置成'{}'文章来源:https://www.toymoban.com/news/detail-637369.html
<#list ObjectList as item>
<@assign b=item.a!{}>//or (<@assign b=(item.a)!{}>)
</@list>
<p>${(b.username)!}</p>
这样下面就可以取值判断了。文章来源地址https://www.toymoban.com/news/detail-637369.html
到了这里,关于NonHashException: For “.“ left-hand operand: Expected a hash, but this has evaluated to a string的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!