2

在 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:表达式 obj.generateUserToken 在 user_page.ftl 的第 63 行第 36 列未定义。

这是否意味着 Freemarker 访问的所有方法(使用默认的 BeanWrapper)都必须符合 bean 属性命名约定?

4

1 回答 1

2

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

于 2012-07-26T18:35:31.987 回答