在FreeMarker中调用非bean属性方法

时间:2012-07-26 15:47:26

标签: javabeans freemarker

在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属性命名约定?

1 个答案:

答案 0 :(得分:2)

您应该可以在模板中执行obj.generateUserToken()。请注意();没有它你只是得到方法,但不要调用它。但是在你的情况下还有一些其他问题,因为它说“generateUserToken”是未定义的。最确定的是,该方法不是来自公共类或接口。