javabeans - 在 FreeMarker 中调用非 bean 属性方法

标签 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>

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/

相关文章:

java - SnakeYAML:如何设置用于加载的 bean 属性类型

java - 将所有字符串字段更改为大写

java - Freemarker 中的嵌套表达式

templates - 在freemarker中交替使用表格行颜色

java - Freemarker 方法不能接受对象作为参数

java - Spring bean注入(inject)没有显式的依赖声明?

jsf-2 - 为什么我们在使用 JSF Web 应用程序时需要 beans.xml?

freemarker - 如何在 freemarker 中将数字与空检查进行比较?

javascript - Freemarker 中的多语言自动转义

java - 最终变量在jsp中不起作用