分享一个jfnal的json传参的Validator

我没有找到合适的就final的json的validator,所以自己动手自己写了个。

地址:

validator地址

自己进去提取下哈,使用起来很简单

在Model的类上面添加注解如:

@SuppressWarnings("serial")
@V(value={
	@ValidateGroup(name="createGroup", validates = {  
		@Validate(field="username", type=ValidateType.NOEMPTY, msg="用户名不能为空"),
		@Validate(field="password", type=ValidateType.NOEMPTY, msg="用户密码不能为空"),
		@Validate(field="password", type=ValidateType.MINLENGTH, msg="密码不能少于6位", value="6"),  //value: 最小长度
		@Validate(field="password", type=ValidateType.MAXLENGTH, msg="密码不能多于20位", value="20"), //value: 最大长度
		//@Validate(field="password", type=ValidateType.EQUALS, msg="两次密码输入不一致", value="repassword"), //value: 要比较的字段
		@Validate(field="age", type=ValidateType.NULLABLE, msg="年龄不能为空"), 	
		@Validate(field="age", type=ValidateType.MIN, msg="年龄不能小于6", value="6"), //value: 最小值
		@Validate(field="age", type=ValidateType.MAX, msg="年龄不能大约150", value="150"), //value: 最大值
		@Validate(field="telephone", type=ValidateType.REG, msg="手机格式不正确", value="^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\\\D])|(18[0,5-9]))\\\\d{8}$"),
	}),
	@ValidateGroup(name="update", validates = {  
		@Validate(field="id", type=ValidateType.NULLABLE, msg="用户名不能为空"),
	})
})
public class Account extends BaseAccount<Account> {}


需要使用验证的地方:

/**
 * 更新信息,这里注意删除:就只吧delete字段设置为:已删除
 * @param ajax json: {id, 其他信息} {id:1, disable:"正常"}
 * @return 
 * @return json BaseDto 
 */
@Op("修改用户信息")
@RequiresPermissions("account:edit")
public void update(){
    Account account = JsonTool.getObject(HttpKit.readData(getRequest()), Account.class);
    Validator validator = new Validator();
    validator.exec(account, "createGroup");
        if(validator.hasError()) {
            throw new BusinessException(BusinessErr.INVALID_PARAM, validator.getStringErrors());
        }
        if(Tools.isNotNull(account.getPassword())){
            account.setPassword(Tools.MD5(account.getPassword()));
        }
        if(accountService.update(account)){
            renderJson(ViewDto.create(account.getId()));
        }else{
            throw new BusinessException(BusinessErr.ERROR, res().get("update-err"));
    }
}


效果:1111.png

评论区

JFinal

2018-12-16 15:14

对 json 数据进行 validate,这个需求有不少人提出来过,确实很有价值,感谢楼主的分享

热门分享

扫码入社