2020-05-10 11:08

这个改进不错,谢谢分享

2020-05-09 11:07

@wangjiaxian 建议看看 json 的文档与源码,很少的内容,一会就看完了:
https://jfinal.com/doc/12-1

最后,还可以继承扩展 JFinalJson, 在里头加一个对字段名转驼峰的代码也可以解决,方法也是现成的:
StrKit.toCamelCase(...)

2020-05-09 11:06

@wangjiaxian 配置成 FastJson 转换 json 时,对 Model 对象的转换一定要注意

fastjson 转 json 时依赖 getter 方法,所以你在使用 sql 关联查询时获取到的一些别的 table 的字段就不会被转换。使用 Model.put(...) 进去的数据也不会被转换,反正记住没有 getter 方法的就不会被转换

JFinalJson 对 Model 对象的转换不依赖 getter 方法,而是对 Model 内部的 Map attrs 这个对象进行转换,所以往这里头装入的数据都会被转换

在使用过程中,可以灵活选择,例如:
如果你使用的是 Oracle 数据库,最急需的是解决驼峰字段名问题,可以配置为 FastJson

然后在需要使用 JFinalJson 转换的地方临时使用,例如在 Controller 中这么临时来用:
String jsonString = JFinalJson.getJson().toJson(model);
renderJson(jsonString);

总结就是:me.setJsonFactory(...) 配置默认 json 实现类,在需要临时使用别的 json 实现的时候通过 JFinalJson.getJson() 或者 Xxx.getJson() 来使用

2020-05-09 10:55

@zzutligang jfinal 生于 2011 年,精致迭代 9 年

极简实现 MVC + ORM + AOP + Template Engine , 仅有 2 两万多行代码,与其说 "博大精深" 不如说 "少即是多"

2020-05-09 10:51

@祥子 jfinal 起步为 JDK 8 以后,添加的这个 filter 方法,支持 lambda 方式灵活控制需要被过滤的 table, 而无需继承 MetaBuilder 的方式扩展

强烈建议旧表、新表一起生成,否则当你旧表有改变时怎么办?

2020-05-09 10:49

@南兄 CLASSPATH 环境变量要配置 JDK 的 tools.jar

JRE 没有这个 tools.jar 的话就需要配置 me.setToCglibProxyFactory();

文档中有说明:
https://jfinal.com/doc/4-8

2020-05-09 00:39

@wangjiaxian 生成 base model , 其 getter 方法就是驼峰格式的

如果要转成 json, 使用 FastJson:
me.setJsonFactory(new FastJsonFactory());

2020-05-09 00:38

使用 #render 指令:
#render(_theme+"/common/tpl/css.html")

#render 与 #include 的功能几乎完全一样, 但前者支持传入变量

2020-05-09 00:37

@JYR 404 是路由问题,检查一下路由配置

注意一下 context path 对路由的影响

2020-05-08 20:31

com.jfinal.plugin.activerecord.builder 下面的 MetaBuilder.java 中有现成的代码,直接可用

2020-05-08 19:24

@jsper110 按理说这个不用配置的,解决就好

2020-05-08 19:00

@yashmak 注意查看控制台输出的 jfinal action report, 不同类型的参数获取方式不同

2020-05-08 17:40

单步跟踪一下,看是哪里取不到,或许是参数不对

2020-05-08 17:39

@tctc4869 "不该自己处理" 的意思如下:
1:假定你老项目处理的请求的 url 格式为 /xxx/...
2:假定你让 jfinal 整合后处理的请求的 url 格式为 /yyy/...
3:在 web.xml 中先配置 JFinalFilter,后配置 spring 的 filter 或 servlet,那么请求会先到达 jfinal

那么,jfinal 的 JFinalFilter 会最先接管所有请求:
1:/xxx/... 这种原本该老项目处理的 url 也会被 jfinal 接管
2:接管以后,如果不 "放行" 的话,默认会返回 404 错误

所以,你需要用一个 jfinal 的 Handler 来跳过这些 "不该自己处理" 的 url 请求,handler 内部结构大致如下:
public MyHandler extends Handler {
public void handle(String target, HttpServletRequest req, HttpServletResponse resp,boolean[] isHandled) {
if (target.starts("/xxx/") {
// 这里要放行给 spring
return ;
} else {
next.handle(target, req, resp, isHandled);
}
}

最后配置一下这个 handler
me.add(new MyHandler());

更多 handler 的例子参考:
com.jfinal.ext.handler 包中的源码

2020-05-08 17:32

@LJL2020 com.jfinal.plugin.activerecord.DbPro