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

往事依稀如晨梦 发布于 2012/04/24 13:45
阅读 1K+
收藏 0
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方法来获取值的?

谢谢!


加载中
0
l
lihexing
Freemarker其实可以立即为普通的jsp页面,是需要Action中的属性设置getXXX()方法的。
0
Andre.Z
Andre.Z
加个getter就是了,有啥问题?我用了那么多年,一点问题都没。
Andre.Z
Andre.Z
回复 @月下美人 : 不就一反射么。
往事依稀如晨梦
往事依稀如晨梦
加getter是能解决问题,最终还是想弄明白其中的原理。
0
JustForFly
JustForFly

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

在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/>

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

 

 

返回顶部
顶部