2021-01-29 13:30

UserWeekRewardService 有没有继承什么类或者实现什么接口,而继承的类或者接口所需要的 jar 包是否存在?

还要看看 UserWeekRewardService 内部有什么地方依赖不满足,例如构造方法中对外部类有依赖没满足

最后, jfinal 升级到 4.9.06 看一看

解决后来反馈一下,这个问题比较奇怪

2021-01-28 17:11

目前感觉比较好的办法是:
1:迭代所有 model,获取这些 model 中所涉及的所有字段名
2:以所有字段名为蓝本生成 sql,这样就不会漏掉字段名了
3:但还是解决不了那些 model 中没有指定字段值要给定什么值的问题,给定 null 值可能是不适合的,因为这个字段在数据库中可能已经有值了,给定 null 值相当于是将其删掉

有时候吧,我们做越多,涌现出的问题也就越多,当解决一个问题的时候如果冒出来的问题个数相等或者更多,或者更麻烦,那还不如不解决, 而是约定、限制我们自己的行为

2021-01-28 17:07

是个办法,但比较麻烦,还不如 batch 操作前先对所有 model 迭代扫描,找出拥有最多字段个数的 model,以它为蓝本生成 sql

但上面方法也有缺陷,因为最多字段个数的 model 在如下情况下也不能作为生成 sql 的蓝本,例如:
1:假定 model a 拥有 a,b,c 三个字段值
2:假定 model b 拥有 b,c,d 三个字段值
3:以上情况,字段值数量是一致的,但字段名本身不一致
4:当然,可以更进一步,在迭代的时候获取所有字段名来生成 sql,得到 a,b,c,d 四个字段

2021-01-27 20:47

@一只敲代码的猫 老版本可以照抄 getRawData() 里头的源码,也就两行代码

2021-01-27 16:48

@一只敲代码的猫

客户端发 json 是很方便的, 有很多同学并不知道浏览器中通过 js 代码也能发 json 数据,其实很方便:
function ajaxPostJson(url, jsonString, callback) {
$.ajax({
url: url, data: jsonString,
contentType: 'application/json; charset=UTF-8', // 关键参数
type: 'POST', cache: false, dataType: 'json',
error: function(ret) {alert(ret.statusText);},
success: function(ret) {....}
});
}

注意关键参数是:
contentType: 'application/json; charset=UTF-8'

注意上面的例子依赖 jquery

2021-01-27 16:12

@一只敲代码的猫 服务端目前只有 getBean、getModel、getPara、getRawData、形参注入五个系列的接收方式

你可以通过扩展 ParaGetter 来实现 List《Model》功能,也可以通过 getRequest() 得到 Request 对象以后,扩展实现

当然,最好还是让对方发送 json 数据,然后:
String jsonString = getRawData();
Map map = FastJson.getJson().parse(jsonString, Map.class);

因为 jsonString 转化成 List《Xxx》 的各类 json 工具已经成熟多年

2021-01-27 16:02

@一只敲代码的猫 得看对方怎么传递,对方不传 list,服务端也没办法

2021-01-27 15:03

@一只敲代码的猫 看对方传的格式是什么, 建议传 json 过来,然后你只需要在服务端 :
String jsonString = getRawData();
Map map = FastJson.getJson().parse(jsonString, Map.class);

2021-01-27 15:02

导入的关键是,一定要当成 maven 项目导入:
1:import
2:Maven
3:Existing Maven Project

注意导入前先配置好 maven :
https://jfinal.com/doc/1-1

2021-01-27 14:56

继承一下你需要用到的 Render,覆盖父类中的 render() 方法,放入自己的代码,然后用的时候这样:
render(new MyRender(....));

如果你希望在 render(String ...) 中用上 MyRender,可以继承 RenderFactory 覆盖 getRender(...) 来实现,最后要配置一下:
me.setRenderFactory(new MyRenderFactory());

你还可以在 BaseController extends Controller 中通覆盖或者新建 render 方法来用上你的 MyRender

2021-01-26 16:57

@zeroabc 之前的 undertow 版本一样有事,做事要细心

2021-01-26 16:25

浏览器发的请求中的 cookie 值含有一些无效控制字符: "invalid control characte"

打开浏览器开发者工具,将这些 cookie 删掉即可

显然是与 undertow 无关的

2021-01-22 15:45

@jf大哥大 静态资源在 fatjar 下面没有问题,下载首页的 jfinal demo,里面有一个打成 fatjar 的说明文件

2021-01-22 15:19

请求进入到了 filter,并且已经被 UrlSkipHandler 正确处理过了

后来出现的 404 是 tomcat 给出的,肯定就与 jfinal 无关了,你得让那些被 UrlSkipHandler 跳过的请求能被 tomcat 处理掉才可以

说白了就是你得让那些 url 的路径、文件名都要正确,否则 tomcat 必须要报 404

注意我的用词, 是 "必须" , 因为 tomcat 在找不到路径与文件的时候不出 404 是不行的

2021-01-22 15:14

扫描jar里面的action映射不需要改造,jfinal 新版本有这个功能:
https://jfinal.com/share/2311

其实,数据库映射也不需要扫描,因为生成器可以生成是映射,注意看文档