2020-12-11 15:36
@NignSah 换个方向解决,先通过 getRequest().getParameterNames() 先得到所有参数名,然后再迭代得到所有属性
2020-12-11 14:18
@NignSah 在我这无法重现这个问题, 可能是你的请求出现了某种特征引发的
你测试一下写一个简单的 action 看行不行,例如:
public void test() {
Map map = getParaMap();
renderJson(map);
}
在我这是没有任何问题的
2020-12-10 15:48
@hen 我一般是直接用的 Model, 而不用 VO, getter setter 方法已经用生成器生成过了, VO 没有必要了
2020-12-10 15:13
@陈贤一 导入 demo 要注意,一定要当成 maven 项目导入,也就是要走 IDEA 的 maven 项目导入 "向导"
导入后除了修改数据库用户名密码以外,别的啥都不用改
这个 demo 马上快 10 年了,如果有问题,早在 9 年多以前就会被发现并解决,不会有问题的,放心
2020-12-09 22:58
你谈到了 mybatis 对持久化层相对定义得更明确这个问题,在 10 年前我设计 active record 的时候也跟你有一样的考虑,但其实完全是多虑了:
1:数据库层面已经对字段的长度、类型、是否可以为 null 等等做过限定了,ORM 这一层如果再做一次其实没多少必要,最终落实的时候无非也是抛个异常或给个提示到应用层
2:对于 sql 查询来说,更加没有必要有所谓的定义明确的问题,因为 JDBC 已经对数据库字段转成什么样的 java 类型做过这个工作,绝大多数情况没有必要干预。为了提升用户体验可以适当干预几个类型,例如 Model.getStr、getInt 等等几个方法提供了自动类型转换
2020-12-09 22:53
basemodel 中的 getter、setter 本身就是不用写的,是生成器自动管理的,所以也就没有使用 lombok 的必要
jfinal 的 Model 其实是结合了传统 bean 与 map 的优点,bean 体现在 getter、setter 方法,好处不用多说, map 的优点是可以自由承载数据
model 中的 map 自由承载数据主要体现在两个方面:
1:sql 关联查询可以将其它 table 中的字段关联进来
2:可以通过 model.put(...) 放入任意数据便于在 view 层展示
以上两个特性是传统 bean 无论如何也无法实现的
至于 model 转 VO, 稍微用用反射就可以做到了,主要流程如下:
1:获取 VO 的所有 setter 方法
2:对 setter 方法进行循环,得到属性名,从 model 中取出数据,再放入 VO
model.get(属性名) 可很容易获取数据
3:将反射结果存到缓存,提升性能