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-11 10:54

handler 是拦截所有 http 请求,而 interceptor 只拦截配置了该拦截器的 action

handler 是无条件拦截器所请求,包括 css、jpg、js 等静态请求。而 interceptor 只拦截 action 请求,无视 css、js 等静态请求

看一下文档中的 jfinal 顶层架构图就明白了

2020-12-11 10:52

@NignSah 这个版本没问题的,天天都在用的

2020-12-10 20:38

jfinal undertow 用的哪一个版本?

此外,请求是不是包含了文件上传,也就是说是不是包含了 type="file" 这个 input 域

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-10 12:53

jfinal 项目是标准的 maven 项目,这个肯定是没什么可以说的了

只要你按标准的 maven 项目导入就可以了,出现这样的问题多数是配置不当引起的

2020-12-10 12:14

demo 中的 package.xml 有如下配置:
<formats>
<format>dir</format>
<format>zip</format>
</formats>

2020-12-10 11:45

在 package.xml 中的最上部分,已经有注释明确说明了,如何打包 zip、jar、dir、gz 等等格式

而且可以同时打包多种格式,不要乱改 package.xml 文件

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:将反射结果存到缓存,提升性能

2020-12-09 18:02

因为你的 href 后面的资源路径没有以 "/" 打头,所以资源路径会随着你当前目录到处乱飞

改成 "/assets/..... 即可

2020-12-09 15:53

@山东小木 这个分享主要是针对昨天新加的 Model.each API,关注这个就行

2020-12-09 14:32

@山东小木 这个问题好像跟去掉 order by 无关