From 810e069bccfc7bd1662d474369f0f431125b4fc7 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Thu, 23 Oct 2025 15:09:15 +0100 Subject: [PATCH] FieldError uses HexFormat to format byte[] See gh-35675 --- .../org/springframework/validation/FieldError.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-context/src/main/java/org/springframework/validation/FieldError.java b/spring-context/src/main/java/org/springframework/validation/FieldError.java index 59a7900fa36..2177cda914a 100644 --- a/spring-context/src/main/java/org/springframework/validation/FieldError.java +++ b/spring-context/src/main/java/org/springframework/validation/FieldError.java @@ -16,6 +16,8 @@ package org.springframework.validation; +import java.util.HexFormat; + import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -126,8 +128,18 @@ public class FieldError extends ObjectError { // We would preferably use ObjectUtils.nullSafeConciseToString(rejectedValue) here but // keep including the full nullSafeToString representation for backwards compatibility. return "Field error in object '" + getObjectName() + "' on field '" + this.field + - "': rejected value [" + ObjectUtils.nullSafeToString(this.rejectedValue) + "]; " + + "': rejected value [" + formatRejectedValue() + "]; " + resolvableToString(); } + private String formatRejectedValue() { + + // Special handling of byte[], to be moved into ObjectUtils in 7.0 + if (this.rejectedValue instanceof byte[] bytes && bytes.length != 0) { + return "{" + HexFormat.of().formatHex(bytes) + "}"; + } + + return ObjectUtils.nullSafeToString(this.rejectedValue); + } + }