2018-09-01 20:24
@nbjgl 那个太老了,你可以先参考 beetl 官网的方法整合 beetl,然后通过 renderTemplate(...) 来使用 enjoy 引擎
2018-09-01 18:45
补充一个有用的点: JFinalJson 转 json 时不依赖于 getter 方法,而是将 Model.attrs 这个 Map 中的值转成 json,所以这就支持了你 sql 关联查询时查出来的字段
这类关联查出来的字段在 Model/Bean 中是没有 getter 方法的,相当于动态化了
例如,你在 Article 这个 model 中没有定义 getUserName() 这个方法,但可以这样查询:
select a.*, u.userName from article a inner join user u on a.userId = u.id
上面是一个关联查询,在转 json 时会将 u.userName 这个关联过来的属性转换成 json,而这个功能在一般的 json 转换工具中是不可能实现的
2018-09-01 17:36
Brand 光定义两个属性不够的,需要有相应的 getter 方法配套,因为 fastjson 是通过你的 getter 方法进行 json 转换的
如果用 jfinal 自己的 json 转换工具,则需要 put("company", company) 这样将数据 put 进去才能转换,总的来说没有必要定义属性
此外, createTime 转换错误,你看这个 String 数据是多哪里来的? 是不是自己放进去的? 还是说从数据库来的时候就是 String ?
一般来说 date 数据从数据库出来仍然是 Date 类型,而不会无故成为 String 类型,这个通过单步调试很容易知道类型为啥不对
2018-09-01 15:53
@fansunion 这个需求还用不着扩展 MetaBuilder, 即便是 mybatis , 我相信你在写 sql 时仍然还是要使用下划线形式的,否则 mybatis 还要将你的 sql 中的字段名强行再转换一次,这个成本就太高了
2018-09-01 15:51
@fansunion 用生成器生成 base model,生成后的 getter setter 方法都是驼峰形式的了
生成以后,绝大部分情况下你面对的都是驼峰形变量,例如模板中这样用:
#(shop.userId)
只有当你写 sql 查询的时候才要用与数据库字段一样的形式,例如:
dao.find("select user_id from shop where user_id = ?", userId);
2018-09-01 14:28
@hb963724769 还要检查一下 tomcat 下面的 lib 包中是否存在与你项目中重复的 jar 包,这里所指的重复是指项目重复,但版本不同
2018-09-01 13:01
这个问题还是第一次碰到,挺奇怪的
NoClassDefFound 这个异常一般是 jar 文件版本冲突(例如,引入了不同版本的同一个项目的jar包),或者 class 文件被损坏,建议你 mvn clean 一下,然后重新编译 mvn compile
最后重新打包 mvn package
错误提示的那个 Controller 所在的 jar 包可能被损坏。 此外,要格外注意一下是不是有外部的程序在修改破坏你的 jar 包或者修改你的 WEB-INF/classes 下面的 class 文件
建议 tomcat 下的部署方式采用这种:
https://my.oschina.net/jfinal/blog/353062
最后,这个问题肯定是与 jfinal 无关的,是某种不明原因造成你的 jar/class 文件版本不对或者被损坏。 这种损坏是 jfinal 肯定干不了的事