在Freemarker中,我们通常会做这样的事情。
class User{
private String name;
public String getName()...
pubilc void setName(String name)....
}
然后我们的Freemarker代码就像这样调用属性名......
<strong>Hello ${user.name}</strong>
如果我们想要像这样调用“generateUserToken”用户的方法呢?
class User{
private String name;
public String getName()...
public void setName(String name)....
public String generateUserToken(){
return "Hello World";
}
}
现在,如果我尝试像这样调用Freemarker代码,我会收到错误...
<a style="font-size: 20px" href="${obj.generateUserToken}">VIEW USER</a>
引起:freemarker.core.InvalidReferenceException:Expression obj.generateUserToken在第63行第36列中未定义 user_page.ftl。
这是否意味着Freemarker访问的所有方法(使用默认的BeanWrapper)必须符合bean属性命名约定?
答案 0 :(得分:2)
您应该可以在模板中执行obj.generateUserToken()
。请注意()
;没有它你只是得到方法,但不要调用它。但是在你的情况下还有一些其他问题,因为它说“generateUserToken”是未定义的。最确定的是,该方法不是来自公共类或接口。