FreeMarker页面从POJO中取值是要通过getter方法吗
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,你试一试就知道了。
在User类总增加 getAbc
那么你就可以在页面上写
<#assign books = user.abc/>
如果想知道机制,建议去看源代码。
回复
不就一反射么。
Freemarker其实可以立即为普通的jsp页面,是需要Action中的属性设置getXXX()方法的。