2020-03-04 15:19
@becklu 已在文档中添加, 感谢反馈:
https://jfinal.com/doc/1-6
2020-03-02 22:38
@sliver 对于拥有非常多 post 请求,也就是添加、更新请求的项目可能要定义很多 Validator
但一般来说提交的数据结构是有规律的,或者说是有限的,所以,你可以定义多个通用的 Validator ,在使用的时候再灵活去组合,例如:
@Before( AaaValicator.class, BbbValidator.class, CccValidator.class)
public void action() {
...
}
还有一种办法是在 Validator 方法中多加些 if 分支,或建立一些通用的抽象,这样也可以让一个 Validator 满足多个 action
最后,有很多项目是读多写少的,例如 jfinal.com ,而一般只有写数据的 action 才需要 Validator。 所以一般情况用 Validator 还是可以接受的
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?