SpringValidatorAdapter skips value retrieval for Set field without index

Issue: SPR-16177

(cherry picked from commit 3091fee)
This commit is contained in:
Juergen Hoeller
2017-11-13 21:50:55 +01:00
parent 2c8a6bb6f5
commit 9779b8b2ab
2 changed files with 185 additions and 2 deletions

View File

@@ -263,8 +263,8 @@ public class SpringValidatorAdapter implements SmartValidator, javax.validation.
*/
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);