SpringValidatorAdapter skips value retrieval for Set field without index

Issue: SPR-16177
This commit is contained in:
Juergen Hoeller
2017-11-13 21:50:55 +01:00
parent 0e49e32188
commit 3091feee23
3 changed files with 365 additions and 2 deletions

View File

@@ -285,8 +285,8 @@ public class SpringValidatorAdapter implements SmartValidator, javax.validation.
@Nullable
protected Object getRejectedValue(String field, ConstraintViolation<Object> violation, BindingResult bindingResult) {
Object invalidValue = violation.getInvalidValue();
if (!"".equals(field) && (invalidValue == violation.getLeafBean() ||
(!field.contains("[]") && (field.contains("[") || field.contains("."))))) {
if (!"".equals(field) && !field.contains("[]") &&
(invalidValue == violation.getLeafBean() || field.contains("[") || field.contains("."))) {
// Possibly a bean constraint with property path: retrieve the actual property value.
// However, explicitly avoid this for "address[]" style paths that we can't handle.
invalidValue = bindingResult.getRawFieldValue(field);