开发者社区> 问答> 正文

JFinal中有关 Model 自定义属性的问题?报错

我的Model中需要添加自定义属性,一开始我想当然地调用了set(key, val)方法,当然不会成功,JFinal报了错,然后我搜下面这个帖子:

http://www.oschina.net/question/265660_150911

这个帖子中说了一种方式,就是在Model中添加自定义属性,然后给属性提供setter/getter,在setter中调用super.put(key, val)方法。

我想问的是有没有可能不在Model中添加任何属性和方法,JFinal也能把自定义属性跟数据库字段同样对待呢?

比如下面这段代码:


public class Industry extends Model<Industry> {

    public static final Industry dao = new Industry();

    /**
     * 查询所有行业分类, 带有层级关系
     * @return 所有行业顶级分类, 子分类用subIndustries键索引
     */
    public List<Industry> queryAll () {
        List<Industry> topLevels = querySubIndustry(0);

        for (Industry industry : topLevels) {
            List<Industry> subList = querySubIndustry(industry.getInt("pbc_id"));
            put("subIndustries", subList);
        }

        return topLevels;
    }
}


我不想在Industry类中添加subIndustries属性,但我又想在FreeMarker中能用到subIndustries属性,请问有没有办法呢?

上面这段代码不报错,但queryAll方法返回的Industry中都没有subIndustries属性,如下图


但从Model源码中看,put方法是将值设置到Map类型的attrs属性中去了:

private Map<String, Object> attrs = getAttrsMap();
/**
 * Put key value pair to the model when the key is not attribute of the model.
 */
public M put(String key, Object value) {
	attrs.put(key, value);
	return (M)this;
}


可是我却仍然取不到值,请问这是为什么呢?


描述地比较乱,请谅解!


展开
收起
爱吃鱼的程序员 2020-06-15 19:22:31 796 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    什么也不用做,直接使用put方法就打完收工了<divclass='ref'>

    引用来自“JFinal”的评论

    什么也不用做,直接使用put方法就打完收工了

    2020-06-15 19:22:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Wicket User Guide - Ref 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载