BeanValidation: 如果把violation和方法参数联系起来

开源老码农 发布于 2017/03/07 18:31
阅读 521
收藏 0

NGINX社区官方微服务训练营,深入了解K8s网络,线上课程+专家答疑,立即加入>>>

JSR349 BeanValidation 1.1标准定义了ExeutableValidator.validateParameters方法. 该API可以验证一个方法的参数是否有效. 这个方法返回一个ConstraintViolation的集合

我现在遇到的问题是如何将集合中的ConstraintViolation元素和传递给validateParameters API的参数列表中的参数联系起来. 换句话说, 我希望知道是那个参数导致的violation.

有人遇到过这种问题吗?

加载中
0
开源老码农
开源老码农

这个问题答案在ConstraintViolation中的propertyPath属性里面, 这个属性的类型是javax.validation.Path, 一个Path由多个节点组成, 其中有一个节点是NodeImpl.ParamNodeImpl, 把这个节点toString()的话会返回类似arg0, arg1, arg2这样的字串. 字串中的0, 1, 2就是参数的位置变量. 拿到这个变量, 我就可以推断出用户是那个form field出错了

0
乌龟壳
乌龟壳

虽然不知道你在说啥,但是我强答一下

for (ConstraintViolation c: paramters) {
    System.out.println(c.getMessage());
}

 

0
开源老码农
开源老码农
该评论暂时无法显示,详情咨询 QQ 群:点此入群
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部