在 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>
Caused by: freemarker.core.InvalidReferenceException: Expression obj.generateUserToken is undefined on line 63, column 36 in user_page.ftl.
这是否意味着 Freemarker 访问的所有方法(使用默认的 BeanWrapper)都必须符合 bean 属性命名约定?
最佳答案
您应该能够在模板中执行obj.generateUserToken()
。注意()
;如果没有它,您只是获得该方法,但不调用它。但是您的情况还有其他一些问题,因为它说“generateUserToken”未定义。可以肯定的是,该方法不是来自公共(public)类或接口(interface)。
关于javabeans - 在 FreeMarker 中调用非 bean 属性方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11673116/