JFinal Model自定义属性可以自动执行setter吗?

一去二三里_ 发布于 2016/09/24 13:10
阅读 235
收藏 0

@JFinal 想给系统中已经存在的model添加一个非持久化的属性

public class User extends Model<User> {
	public static final User dao = new User();
       //简单的计算
	public void setMoney() {
		put("money", getInt("age") * 5);
	}

}
然后在controller中获取user
public void query() {
		int id = getParaToInt(0);
		User user = User.dao.findById(id);
		renderJson(user);
	}
结果中没有money这属性,断点setMoney方法也没有执行到,有办法让JFinal自动执行吗,或者其他方式实现自定义属性,因为实际中的这model已经被大量使用,一个个加的话太麻烦了。
加载中
0
bloy
bloy
重写 findById
一去二三里_
你的意思是所有自定义的属性都要自己来set是吧?
0
JFinal
JFinal

    find 系列的方法得到数据以后,创建 model,然后往 model 中放数据时并没有使用 setter 方法,也没有使用 set(String, Object) 方法。

   建议换个思路,改造一下 getMoney 方法,让值变得正确,在进行 json 转换时是可以让其去调用 getMoney 方法的。这里注意一个问题,jfinal 默认的 json 实现也是不走 getter 方法的,使用 me.setJsonFactory(new FastJsonFactory()) 切换到 fastjson 才可以 

0
bloy
bloy
publicclassUserextendsModel<User> {
    publicstaticfinalUser dao =newUser();
       //简单的计算
    publicvoid setMoney() {
        put("money", getInt("age") *5);

    }

    public User findById(Obecjt id){

        User user = dao.findFirst("select * from aa wher id=?",id);

        user.setMoney()

        return user

    } 

}

这样应该可以

返回顶部
顶部