NutzCN Logo
问答 Validations 校验
发布于 2446天前 作者 qq_ec453099 2575 次浏览 复制 上一个帖子 下一个帖子
标签:

校验规则
@Validations(errorMsg="姓名不合法",strLen= {0,10})
private String realName;

参数不传realname,提示errorMsg信息;
参数传realname,不提示errorMsg信息;
能不能做到,传了参数才校验;不传不校验

30 回复

我只需要校验字段长度

那得用custom自行扩展一下

用其中的el应该做的样子

实体中好多字段都需要这样校验,其他表也要校验,怎么写?

例如EL的方式

@Validations(errorMsg="姓名不合法", el="value == null || (value.length() > 0 && value.length() < 10)")

可以注册一个el方法, 实现

@Validations(errorMsg="姓名不合法", el="strLenCheck(value, 0, 10)")

这样写了好像不合适@Validations(errorMsg="姓名不合法", el="value == null || (value.length() > 0 && value.length() < 10)")
调试了下 el()=false, 但errorMsg 没信息

if (val instanceof Boolean)
return (Boolean)val; --->在这return ,没执行下一步,当前字段errorMsg没信息
errors.add(fieldName, errorMsg);

哦,我知道了, el返回的报错信息...

@Validations(el="(value == null || (value.length() > 0 && value.length() < 10)) ? '姓名不合法' : null")

@Validations(el="(value != null && (value.length() > 0 && value.length() < 10)) ? '姓名不合法' : null")

再修正...

@Validations(el="(value != null && (value.length() > 0 && value.length() < 10)) ? null : '姓名不合法'")

还是写个el自定义函数吧...

写了个el自定义函数/
但是源码这有问题吧!,还是我没弄清楚
if (val == null)
return true;
if (val instanceof Boolean)
return (Boolean)val;-----到这应该判断ture/false,再是否add errorMsg
errors.add(fieldName, errorMsg);
return false;

```

不判断的话,errors对象信息有问题

噢!! 我明白了, 非空非boolean就能返回errorMsg

@Validations(el="(value != null && (value.length() > 0 && value.length() < 10)) ? null : 999 ")

不对,非空非boolean,我也不需要errorMsg;
应该是ture不要msg,false 要msg

@qq_ec453099 你尝试改一下?? 发个pull request?

应该是这样的,你看下合适不:
if (val instanceof Boolean) {
if((Boolean)val == false) {
errors.add(fieldName, errorMsg);
return (Boolean)val;
}
}
return true;

兼容一下非boolean返回值的情况?

public static boolean el(String fieldName, Object obj, String el, String errorMsg, Errors errors) {
Context context = Lang.context();
context.set("value", obj);
Object val = El.eval(context, el);
if (val == null) {
return true;
}else {
if (val instanceof Boolean) {
if((Boolean)val) {
return true;
}else {
errors.add(fieldName, errorMsg);
return false;
}
}
}
errors.add(fieldName, errorMsg);
return false;
}

看上去靠谱, 来个pull request? 码云和github均可

貌似还有问题,好像回到最初了:
比如 email字段,非必填字段
insert数据时,email未传值,可以插入空字符
email有值时,就要校验email数据格式;
如果这样写校验规则 @Validations(email = true, errorMsg = "邮箱格式不正确")
email字段校验过不去,必须传正确的值;
除非用el(),custom()自行扩展了,Validations 已有的验证方法用不了了
有么可能拿required这个方法做标示,
required=true 必填做相关校验,required=false 有值才校验,没有不校验默认给空字符
我这边非必填的varchar字段,默认是空字符;
我现在考虑有这样的需求,还是我考虑乱了

没看懂你想要什么→_→

@Validations(email = true, errorMsg = "邮箱格式不正确") <----就是像这种校验,必须传值;

可以参数传参校验,不传不校验;还可以用 Validations 已有的验证方法

额,Validations注解再加点配置?

用这个应该可以了 required()

好像不行 required()

我觉得你还是想想怎么在注解上新增个配置吧...

添加回复
请先登陆
回到顶部