快捷导航

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

JSR349 BeanValidation 1.1标准定义了ExeutableValidator.validateParameters方法. 该API可以验证一个方法的参数是否有效. 这个方法返回一个ConstraintViolation的集合我现在遇到的问题是如何将集合中的ConstraintViolation元素和传递给validateParameters API的参数列表中的参数联系起来. 换句话说, 我希望知道是那个参数导致的violation.有人遇到过这种问题吗?

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

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

使用道具 举报

虽然不知道你在说啥,但是我强答一下
for (ConstraintViolation c: paramters) {
    System.out.println(c.getMessage());
}
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP