FreeMarker页面从POJO中取值是要通过getter方法吗

发布于 2021-11-13 21:47:32 字数 816 浏览 926 评论 3

public class User{
    private List books;//用户有很多本书
    public List getAbcbooks(){return  books;}
    public void setBooks(List books){this.books=books;}
}
public class Test(){
.....//省略模板设置
User u=new User();
u.getAbcbooks.add("book01");
u.getAbcbooks.add("book02");

context.put("user",u);//设置数据模型
}

用FreeMaker在页面中这样定义:<#assign books = user.books/>会出错:user.books未定义。

但是这样写就没问题:<#assign books = user.abcbooks/> 和User类中的方法:getAbcbooks()有关系吗?

在网上看别人代码,其中类的属性的setter和getter方法大都是自动生成的,但是如果修改getter方法,那么再用"类.属性"取值就会出现未定义错误。

现在我不明白Freemarker取值原理是不是通过分析getter方法来获取值的?

谢谢!


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬花如无物 2021-11-16 07:54:43

是的,你试一试就知道了。

在User类总增加 getAbc

public class User{
 private List books;//用户有很多本书
 public List getAbcbooks(){return  books;}
 public void setBooks(List books){this.books=books;}
 public String getAbc(){return "hello world";}
}

那么你就可以在页面上写

<#assign books = user.abc/>

如果想知道机制,建议去看源代码。

 

 

牵你的手,一向走下去 2021-11-16 00:10:41

回复
不就一反射么。

德意的啸 2021-11-14 19:16:36

Freemarker其实可以立即为普通的jsp页面,是需要Action中的属性设置getXXX()方法的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文