猿问

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

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

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

有人遇到过这种问题吗?


绝地无双
浏览 501回答 4
4回答

德玛西亚99

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

慕婉清6462132

虽然不知道你在说啥,但是我强答一下for (ConstraintViolation c: paramters) {    System.out.println(c.getMessage());}
随时随地看视频慕课网APP
我要回答