我的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; }
可是我却仍然取不到值,请问这是为什么呢?
描述地比较乱,请谅解!
什么也不用做,直接使用put方法就打完收工了<divclass='ref'>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。