Kolejności domyślnych parametrów sprawdzania poprawności fasoli?

Obecnie próbuję dostarczyć niestandardowy komunikat sprawdzania poprawności przy użyciu sprawdzania poprawności bean.

Obecnie używa walidacji fasoli apache Spring mvc 3.1.1 +.

W moim komponencie bean określam:

<code>@Size(min=1, max=50)
private String title;
</code>

W moich wiadomościach.properties:

<code>Size.addForm.title=The title must not be empty and must not exceed {1} characters.
</code>

Z eksperymentu dowiedziałem się, że:

{0} odnosi się do „tytułu”{1} odnosi się do maksimum, które wynosi 50{2} odnosi się do min, która wynosi 1

i będzie wyświetlany jakoThe title must not be empty and must not exceed 50 characters. który jest poprawny.

Ale wszystko to z eksperymentów. zastanawiam sięczy istnieją dokumentacje określające kolejność parametrów ograniczeń domyślnych ?

Starałem się z nadziejąSize.addForm.title=The title must not be empty and must not exceed {max} characters. bazując na domyślnym ValidationMessages.properties, ale kończy się na NumberFormatException na{max}. Myślę, że ma to coś wspólnego z interpolacjami?

Aktualizacja

Tak więc każdy z nich zawodzi niezależnie z NumberFormatException na{max} :

messages.properties : Size.addForm.title = Tytuł nie może być pusty i nie może przekraczać{max} postacie.messages.properties : Size = Tytuł nie może być pusty i nie może przekraczać{max} postacie.messages.properties : javax.validation.constraints.Size.message = Tytuł nie może być pusty i nie może przekraczać{max} postacie.ValidationMessages.properties : Size.addForm.title = Tytuł nie może być pusty i nie może przekraczać{max} postacie.ValidationMessages.properties : Size = Tytuł nie może być pusty i nie może przekraczać{max} postacie.

To jest stacktrace:

<code>java.lang.NumberFormatException: For input string: "max"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.text.MessageFormat.makeFormat(Unknown Source)
    at java.text.MessageFormat.applyPattern(Unknown Source)
    at java.text.MessageFormat.<init>(Unknown Source)
    at org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:151)
    at org.springframework.context.support.ResourceBundleMessageSource.getMessageFormat(ResourceBundleMessageSource.java:281)
    at org.springframework.context.support.ResourceBundleMessageSource.resolveCode(ResourceBundleMessageSource.java:188)
    at org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:205)
    at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:146)
    at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1214)
    at org.springframework.web.servlet.support.RequestContext.getMessage(RequestContext.java:571)
    at org.springframework.web.servlet.support.BindStatus.initErrorMessages(BindStatus.java:177)
    at org.springframework.web.servlet.support.BindStatus.getErrorMessages(BindStatus.java:273)
    at org.springframework.web.servlet.tags.form.ErrorsTag.exposeAttributes(ErrorsTag.java:173)
    at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.writeTagContent(AbstractHtmlElementBodyTag.java:48)
    at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
    at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
</code>

Jest to jedyny, który działa z nazwanym parametrem, tomusi być ValidationMessages.properties i musi być dokładnie kluczem, który istnieje w domyślnym pakiecie zasobów przez implementację jsr 303 :

ValidationMessages.properties : javax.validation.constraints.Size.message = znasz wad, rozmiar musi być pomiędzy{min} i{max}

Zasadniczo obecny wniosek jest, domyślnie, nie mogę używać nazwanych parametrów w moich konkretnych wiadomościach. Nazwany parametrdziała kiedy jazastąpić dokładny klucz na domyślnym pakiecie zasobów jsr303&& kiedy używam tej samej domyślnej nazwy pliku zasobu jsr303, czyliValidationMessages.properties

Wolę na razie unikać grania z interpolacją, stąd pierwotne pytanie, jak dowiedzieć się, że {0} lub {1} lub {2} odnosi się do tego, co w dokumentacji.

questionAnswers(3)

yourAnswerToTheQuestion