2018-11-24 16:13
@杜福忠 嗯,这是一种方式。不太习惯这种,纯正的bean,定义属性,自动生成 方法,爽一些。
2018-11-19 15:59
@JFinal toString有学问。
//排除某些字段,比如post的内容content字段
public static String toString(Model model,List exceptAttrList) {
StringBuilder sb = new StringBuilder();
sb.append('{');
boolean first = true;
Set> attrs=model._getAttrsEntrySet();
for (Entry e : attrs) {
String key=e.getKey();
if(ListKit.isNotEmpty(exceptAttrList) && exceptAttrList.contains(key)){
logger.info("JFinalKit->toString,key = {} except",key);
continue;
}
if (first)
first = false;
else
sb.append(", ");
Object value = e.getValue();
if (value != null)
value = value.toString();
sb.append(e.getKey()).append(':').append(value);
}
sb.append('}');
return sb.toString();
}
2018-11-19 15:06
@JFinal 刚刚看了下以前的代码,用super.toString就行了。自己的model,虽然有get set方法,但是属性都是用父类的。父类的toString,model里的那个,就是 打印的attrs的。
这几行代码,手动写比较快,Eclipse自动生成,选择super这个比较慢,而且会增加“Brand toString”之类的描述。哦也。
@Override
public String toString() {
return super.toString();
}
2018-11-14 20:17
@JFinal 这样玩呀。每个类都得复制粘贴,自己的类 已经继承Model了,多重继承麻烦。eclipse的自动生成又不好用。只能搞个工具方法了。。。
2018-11-12 16:17
@JFinal 现在是用拦截器做的,向Controller set属性,麻烦许多。
2018-10-26 16:40
部分知识点总结得简单到位,很不错
有一些地方有所误解,这类总结其实是一个相当庞大的话题,时间关系,在此仅作一个极小的补充:
0:最最重要一点就是:一定要有业务层、一定要有业务层、一定要有业务层。就算业务再简单,项目再小,也一定要有业务层。jfinal 官网的 demo 都是有业务层的。
jfinal 作为一个框架存在,本质目标就是将用户尽可能从具体技术中解放出来,尽可能将精力放在业务功能的实现上。 如果连业务层都没有,那可是极大远离了框架存在的目标。
是否存在业务层不是框架可以限定死的,在使用 Spring 的时候,你也可以将业务写在 controller 中,这个是 spring 永远无法强制你不去这样做的。
所以 "jfinal 没有明确的提出Service层" 这个不能成为一个问题,因为没法控制用户是否要将业务写在 controller 这个行为
1:IOC 容器本质是用于对目标对象注入代理类,从而实现 AOP。而 jfinal 没有 IOC 却更简洁实现了 AOP,所以没有 IOC 其实是一个优点,而不是缺点。这个是 jfinal 有意为之的。如无必要,勿增实体这个是设计的基本原则
2:jfinal 建议 Model 是贫血领域模型,也就是 Model 只承载数据,不要写任何业务,所有业务都要放在业务层,无论你的项目有多少都要这样做。
当然,如果开发者将 Model 用成充血领域模型,站在 jfinal 的角度是无法干预到的,就像是开发者在使用 Spring 的时候将 Model/Bean 用成充血领域模型,一样也无法干预。 是否充血与贫血这个完全取决于开发者自己怎么去用
3:最后一个重要问题就是 jfinal 非常适合在大型中使用,我跟我同事用 jfinal 开发的项目规模已经相当大,比起先前的 SSM 版本,20 台机器减少到 12 台,跑了超过三年,跑得又快又稳
记住:简洁的力量是无比强大的