2018-04-03 18:37

单步调试定位原因,当事人都猜不到,其他人就更没法猜了

先将 c3p0 换成 druid 看看

2018-04-03 16:17

前面你读的是 user,后面读的是 jdbcUrl,当然有所区别

原因是你的 a_little_config.txt 用微软的文本编辑器保存过,而这个东东对 utf8 格式的文本格式采用了不同的规则,进而 jdbcUrl 这个 key 值被其变成了 "dbcUrl",也就是少了一个字符 "j",自然就读不到了

解决办法是,在 jdbcUrl 这一行前面再回车一下,多给出一个空行

还有一个办法是用别的编辑器来创建这个文件,再保存

2018-04-03 15:38

这是目前最简洁优雅的打包整合方案了,感谢你的分享

2018-04-03 15:17

@伯洋 用 actionKey,可以拆分去弄,代码美观取决于写法:
if (actionKey.equals("/user/login"))
loginValidate();
else if (actionKey.equals("/user/login"))
....
然后将 loginValidate() 这些独立去实现

2018-04-03 15:14

@伯洋 还有一个方向是自定义注解,然后在拦截器中通过 inv.getMethod().getAnnotation(...) 拿到注解,自由定义 Validator

可以多尝试一下,jfinal 当然也曾经考虑过很多其它方案,只是做出来以后不是极简,或者学习成本太高,所以都废弃了

例如,jfinal 曾有一个设置,是这么来用的:
@Validator("userName", require=true, errorMsg="用户名不能为空")

但这都不如在现在的设计之下,通过 API 引导式来得方便,现在的设计,可以用
this.
这样就自动提示有哪些 validateXxx 系列的方法,就像点菜一样,不仅降低了学民成本,而且 API 引导式可以避免输入性错误

2018-04-03 14:43

Validator 主要用于 form 表单提交,尤其是提交的数据比较多的情况

一般情况在 controller 中直接 if 判断就完事了,不需要写 validator

此外,还有一种用法是表单提交全用 ajax,所有验证在 Service 层来做,你手头的 club 代码里头 LoginService、RegService 就是这么用的

注意这个 LoginService、RegService 同时也用了 Validator,是当时开发的时候先用了 Validator,其实只要在业务层中做一次就可以了

2018-04-03 14:40

用同一个 Validator ,然后里头用 actionKey 做分流就可以了,可以重用

2018-04-03 12:13

maven 中心库可以下载所有版本的 jfinal :
http://search.maven.org/#search%7Cga%7C1%7Cjfinal

2018-04-03 12:01

@问你一声 搞定后在分享频道分享下啊,这个需求还是很多人需要的

2018-04-03 11:58

单步调试一下,看是什么 sql 有问题,异常信息里面没有实质有用的信息量,没人可以猜到原因

2018-04-03 11:57

@问你一声 ajax 拿到的是后端用 enjoy 生成好的整块的 html 片段,所以不需要 js 拼接

如果后端是 renderJson 过来的 Json ,这才需要 js 去拼接,拼接很麻烦

2018-04-03 11:42

@问你一声 谁说要拼接了?

2018-04-03 10:55

HttpKit.get(url, ...) 或者 HttpKit.post(url, ...)

2018-04-03 10:54

选择一级下拉的时候触发一个 ajax 请求到后端,后端得到一级的 id 号,去找二级的列表,然后用 enjoy 渲染成 html 片段

浏览器这端得到 html 片段以后,直接 $("#二级").innerHtml = 片段替换一下即可

注意两点:
1:发 ajax 请求时,类型设置为 "html" 而不是 "json"
2:后端直接 render("二级.html"); 而不是 renderJson();

2018-04-02 21:38

@libofei 如果是仿照 FileRender,没有必要支持断点续传,所以 FileRender 中的大部分代码可以去掉