2016-11-30 21:43

@nbjgl jfinal 为了让开发环境中的 jetty 使用体验更好,会让开发者在重启项目以后仍然可以保持住 session,就是以避免在开发类似于后台管理类项目时频繁去输入用户名和密码去登录,所以将 jetty 设置成为了重启前持久化 session 到硬盘

而这个 jetty 对session 中的数据持久化时,要求被持久化的对象是可以被序列化的,而这个 Log4jLog 对象无法被序列化,所以报这个异常

在生产模式下根本不会存在这个问题

2016-11-30 16:44

注意看一下 jfinal 手册上的路由规则,jfinal 路由只有四个类型,极其简单,一分内学会使用

2016-11-30 16:43

因为你的 form 表单中的 action 属性没写对,应该是 action="/blog"

2016-11-30 15:46

改用 fastjson 代替 jackson,替换方法为:
me.seJsonFactory(new FastJsonFactory())
别忘了添加 fastjson 的一个 jar 包进去,在首页有jfinal all zip 下载,里面包括所有 jar 包

2016-11-30 15:43

@raoda825 你的 Model 中已然有了很多的 find 方法,并且这些 find 方法会将返回值直接封装成 Model,为啥还要用 Db.find(...) 呢? 直接在 model 中 find(...) 即可

2016-11-30 14:00

@raoda825 Db.find 系列的方法会将结果包装成 Recod 对象,而 Db.query 不包装对象,仅原样返回为 Object[] 数组,两者查询逻辑完全一样,仅仅对返回值的处理方式不同

2016-11-30 13:32

用 Db.final 而不是 Db.query 后者返回的数组

2016-11-30 13:21

前面手误打错了,应该是用 JFinalJson.getJson().toJson(...) 以及 FastJson.getJson().toJson(...) 这两个方法试一下,打印单个对象,与多条记录

2016-11-30 13:04

@raoda825 这个就奇怪了,建议用一下 Json.getJson().toJson(list) 看一下结果是什么,另外再对单个对象进行一下 json 转换,看是什么结果,或许是你的项目在底层切换了 json 实现类,造成没有使用 jfinal 官方的 json 转换实现

2016-11-30 12:08

@gxlzlijng c3p0Plugin.setDriverClass(...) 或者 druidPlugin.setDriverClass(...)

2016-11-30 12:07

renderJson(list) 的参数是 List 类型,所以生成的json 是数组,这个是 json 数据格式规范,看这里的有关 json 数组规范就知道了: http://json.org/

截图中的 json 数据,最外层是数组,内层也是数组,如果希望生成的 json 有属性名,那么内部就不能是数组格式,而是 java bean 或者 map 都可以

2016-11-30 11:27

jfinal 2.3 已然添加了 renderQrCode(...) 方法,以后生成二维码也只需一行代码了,新版本正在内测

2016-11-30 11:19

jfinal 的控制器只会处理动态请求,所有的静态请求都会直接跳过不处理,所以这个问题的原因很简单:资源文件的路径错了

解决办法是将大部分路径改成以 "/" 打头的绝对路径,少数地方可用用相对路径

在开发的时候,在浏览器中按一下 F12 键,打开开发者工具,然后看一下哪些资源请求返回的是 404,然后逐一对路径进行调整即可

2016-11-29 14:57

@daix23 所谓的两个项目都要占用 root 文件夹,是指 context path 都为 "" 空字符串而已,这个在我的博文中的回复中已经说明如何去配置