2020-03-01 22:21
用拦截器可以实现各种定制的 validate 功能,博主的分享对于前后分离的项目十分友好
早期的 jfinal 版本对前后分离的 validate 支持不太好,所以高版本的 jfinal 提供了相关 API,在本站 jfinal.com 中的一个用法如下:
/**
* ajax 登录参数验证
*/
public class LoginValidator extends Validator {
protected void validate(Controller c) {
setShortCircuit(true);
setRet(Ret.fail()); // Ret.fail() 将设置 state : "fail" 值
validateRequired("userName", "msg", "邮箱不能为空");
validateEmail("userName", "msg", "邮箱格式不正确");
validateRequired("password", "msg", "密码不能为空");
validateCaptcha("captcha", "msg", "验证码不正确");
}
protected void handleError(Controller c) {
// getRet() 与 setRet(...) 配合使用
c.renderJson(getRet());
}
}
以上的核心在于 validate 中的 setRet(Ret.fail()) 以及 handleError 中的 c.renderJson(getRet()),这样处理以后的好处是对前后分离也一并支持了,controller 中的 renderJson(Ret) 与 validate 中的 c.renderJson(Ret) 实现了统一
2020-03-01 11:31
@yuwen01 文档在极其明显的位置就说明了要改为 jar:
https://jfinal.com/doc/1-3
此外,我上一条回复中已经问过你为啥不配置 packaging?
2020-02-29 17:01
@yuwen01 pom.xml 配置不对, 注意参考首页的 jfinal demo 中的 pom.xml 配置
2020-02-29 11:32
@yuwen01 检查打出来的那个 "主jar包" 中是否有 config1 目录,以及该目录下是否存在 DemoConfig.class 文件
2020-02-28 16:08
@Rocky 刚刚已经改进了这里:
https://gitee.com/jfinal/jfinal/commit/9ceaa3ed0e238db35538beaaa1746fef3f820889
下一版本的 jfinal 已经去除了对于 "if、for、set 等等系统指令" 在解析时必须要有左括号的限定
也就是说以后的版本,你可以用 if、for、set 等关键字来为 html 中的组件命名了
2020-02-28 14:57
@Rocky 与 enjoy 的 #set 指令冲突了,有很多办法解决,最好是用原样输出指令将这块地方包围即可:
https://jfinal.com/doc/6-6
还有一个办法是将 “set-” 前缀改成 "set_" , 也就是改成下划线
不改成下划线也可以,去掉减号,例如:
set-account 改成 setAccount 或者 setaccount