ExecutableValidator.validateParameters
API允许它验证方法调用的参数。
但是当它返回一组ConstraintViolations
时,如何将集合中的违规元素链接到特定参数(例如,通过索引)?
想想我需要在用户发布表单时验证控制器方法调用。一旦我通过validateParameters
API发现数据中存在错误,我就需要通过说明xxx
字段的值无效来回复用户。我确实需要知道哪个参数值导致了特定的违规行为。
有什么想法吗?
答案 0 :(得分:2)
所以答案在ConstraintViolation内部,propertyPath有一个名为javax.validation.Path的属性,类型为Node
每个路径都由{{3}}列表组成。在节点列表中,有一个节点NodeImpl.ParamNodeImpl
。如果toString()
param node impl,它会返回类似arg0
,arg1
,arg2
......以及0
,1
的内容,1
对应于失败的参数索引。