Этот ответ мне очень помог понять, в чем проблема.
Суть в том, что разрешенные сообщения Hibernate заканчиваются как сообщения по умолчанию в BindingResult.
Поэтому следует либо:
- удалить скобки из пользовательских сообщений, а затем использовать:
String msg = messageSource.getMessage(e.getDefaultMessage(), e.getArguments(), locale);
для правильного поиска сообщений, интерполирующих все аргументы.
OR
Откажитесь от пользовательских сообщений в целом и используйте коды сообщений Spring - например, для аннотации Size используйте
Size.model.field в message.properties и код для выполненияпоиск, например:
String msg = messageSource.getMessage(e, locale);
Я ожидал, что сообщение по умолчанию от BindingResult будет иметь полностью интерполированный текст, но кажется, что если сообщение в скобках, Hibernate ищет сообщение в пакете, но нене интерполировать параметры, вместо этого дезинфицировать строку и удалять любые фигурные скобки.