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 1i 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?
Tak więc każdy z nich zawodzi niezależnie z NumberFormatException na{max}
:
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.