Spring Boot — пользовательское сообщение проверки с параметрами аннотации

Я хочу создать свои собственные сообщения проверки с проверкой Spring Boot/MVC.

Я обнаружил, что следующая установка работает:

public class RegisterCredentials {

    @NotEmpty
    @NotNull
    @Size(min=3, max=15)
    private String username;

    ...

}

сообщения.свойства:

NotEmpty.registerCredentials.username = Username field cannot be empty.
NotNull.registerCredentials.username = Username field cannot be empty.
Size.registerCredentials.username = Username length must be between 3 and 15 characters.

После этого я хотел заменить фиксированные значения min=3 и max=15 атрибутами. Я пробовал так, но это не сработало (работает в аннотации @Size(message="..")):

Size.registerCredentials.username = Username length must be between {min} and {max} characters.

Затем я обнаружил, что следующий код работает..:

Size.registerCredentials.username = Username length must be between {1} and {2} characters.

Ну... почти, потому что выдает следующее сообщение:

Username length must be between 15 and 3 characters.

Замена порядка этих {1} и {2} решает проблему, однако при дальнейшем анализе приводит к запутанному коду.

Есть ли решение этой проблемы с чистым кодом?


person Adrian Adamczyk    schedule 07.03.2017    source источник
comment
порядок начинается с 0, а не с 1, почему вы начинаете с 1?   -  person lucumt    schedule 07.03.2017
comment
{0} – это имя пользователя, имя проверенного поля. {3} и {4} не работают   -  person Adrian Adamczyk    schedule 07.03.2017
comment
Это обсуждается здесь stackoverflow.com/a/36344999/1210301 с упоминанием SpringValidatorAdapter. Если расположить в алфавитном порядке, то max будет {1}, а min будет {2}.   -  person Ryan Gustafson    schedule 31.10.2018