2017-04-24 17:50
数据库字段变更,运行一下生成器自动搞定,然后对其 model 的 getter、setter 有依赖的地方 eclipse idea 会显示出要修改的地方,重构很便捷
jfinal 选择以数据库为基础,往上去搭建,数据结构是基础,相对稳定。如果从 model 出发,反向生成 sql 去修改数据库会很麻烦,例如你的改表结构的 sql 控制字段的长度、类型这都要额外写代码,因为仅有 model 中的属性,你生成 sql 的时候是无法知道字段长度的
因此,你还要为 model 属性添加注解,用来指示建表、改表结构 sql 的生成,而 jfinal 的以数据库为出发来得到 model 会便捷省事很多,也更稳固,不容易出问题,我个人不是太信任用 sql 去改表结构这种搞法的
你自己可以试试实现一个从 model 出发,去改表结构、生成表的功能,一定会比 jfinal 现在的设计要麻烦得多
2017-04-21 16:26
@leomj jfinal template engine 考虑过直接支持 isXxx() 方法的 model.xxx 形式的访问,为了提升性能,少去判断这个 isXxx() 方法是否存在是权衡后的结果
因为 object.field 这种访问方式极其普遍,可以支持 java bean、model、Map、public field 等形式的存取,而 isXxx() 这种用法频率并不高,并且 isXxx() 这种方法调用可以搞定这种情况
2017-04-21 15:59
@qiongaxiu 习惯于传统方式的用传统方式也挺好
2017-04-21 15:46
@qiongaxiu 还有一个办法就是用传统的开发模式进行项目的启动代替 jfinal 整合进去的 jetty
jfinal 项目是标准的普通 java web 项目,因此,你以前所有有关 java web 的知识依然有效,用上你以前熟悉的方式就好
2017-04-21 11:49
@Ferrari8899 前面说得已经很清楚了,你先将这个 div 内容从 template 中过一遍,这样就生成了动态内容,生成的内容再发给客户端的 js:
renderHtml(renderToString("div.html"));
关键点在于,你要将 div 的内容先用模板引擎渲染一次,然后将渲染的结果响应给:
$("#id").load("url");
2017-04-21 11:29
这样就好解决了,让 js 请求 action,假定你的这个 div 在一个名为 "div.html" 的文件之中,这样来用一下 controller 中的 renderToString:
String ret = renderToString(...);
renderHtml(ret);
你还可以通过下面的代码在 controller 之外任意去用 Engine 对象:
Template template = RenderManager.me().getEngine().getTemplate("div.htm
String ret = template.renderToString(...);
2017-04-21 11:21
@qiongaxiu 在 idea 之下,开发的时候先去掉 provided,打成war 之前再添加一下。 在 eclipse 下可以一直是 provided没有关系