我搜索了谷歌,阅读了文档等,但我仍然无法弄清楚出了什么问题。
当我尝试访问嵌套属性时,比如说${myObject.id.str}
一个对象,我收到以下错误:Expected hash. myObject.id evaluated instead to freemarker.ext.beans.SimpleMethodModel
. 当我删除.str
并简单地尝试输出时${myObject.id}
,我得到Expecting a string, date or number here, Expression myObject.id is instead a freemarker.ext.beans.SimpleMethodModel
. Id 实际上是一个对象 - 它是java.lang.Number
. 我只是添加了该str()
方法作为获取数字值的便捷方式,因为我认为返回字符串可能会有所帮助。然而,这似乎不是问题,因为问题似乎是 Id 对象本身。我开始怀疑我是否遇到了命名问题,因为调用myobject.myId
似乎有效但没有myobject.id
。这可能是真的,因为类名Id
与属性名相同id
吗?我通常不应该这么想,但是为什么会有myId
相同的Id
对象。
对象如下所示:
public class MyObject
{
private Id id = null;
@Override
public Id getId()
{
return id;
}
@Override
public void setId(Id id)
{
this.id = id;
}
}
id 类如下所示:
public class Id extends Number
{
private Number id = null;
public String getStr()
{
return String.valueOf(id);
}
}
以下在模板中不起作用:
${myObject.id}
只要您没有遇到任何问题,Freemarker 文档就很好。不幸的是,在一遍又一遍地阅读文档并进行谷歌搜索之后,我仍然没有更接近解决方案。
如果有人能对此有所了解,那就太好了。
最好的问候,迈克尔