Порядок параметров проверки bean-компонентов по умолчанию?

В настоящее время я пытаюсь предоставить пользовательское сообщение проверки, используя проверку bean-компонента.

В настоящее время используется проверка spring mvc 3.1.1 + apache bean.

В своем bean-компоненте я указываю:

@Size(min=1, max=50)
private String title;

И в своих messages.properties:

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

Из эксперимента я узнал, что:

  • {0} относится к «заголовку»
  • {1} относится к максимальному, который равен 50
  • {2} относится к минимуму, который равен 1

, и он будет отображаться как The title must not be empty and must not exceed 50 characters., что правильно.

Но все это из экспериментов. Интересно , существует ли документация, указывающая порядок параметров для ограничений по умолчанию ?

Надеюсь, я попытался использовать Size.addForm.title=The title must not be empty and must not exceed {max} characters.на основе ValidationMessages.properties по умолчанию, но в итоге получил NumberFormatException на {max}. Я думаю, это как-то связано с интерполяцией?


Обновление

Таким образом, каждый из них независимо завершается с ошибкой NumberFormatException в{max}:

  • messages.properties:Size.addForm.title=Заголовок не должен быть пустым и не должен превышать {max} символов.
  • messages.properties:Size=Заголовок не должен быть пустым и не должен превышать {max} символов.
  • messages.properties:javax.validation.constraints.Size.message=Заголовок не должен быть пустым и не должен превышать {макс.} символов.
  • ValidationMessages.properties:Size.addForm.title=Заголовок не должен быть пустым и не должен превышать {max} символов.
  • ValidationMessages.properties:Size=Заголовок не должен быть пустым и не должен превышать {max} символов.

Это трассировка стека.:

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)

Это единственный параметр, который работает с именованным параметром. Это должен быть ValidationMessages.properties, и это должен быть именно тот ключ, который существует в пакете ресурсов по умолчанию для реализация jsr 303:

  • ValidationMessages.properties:javax.validation.constraints.Size.message=вы знаете, размер должен быть между {min} и {max}

По сути, текущий вывод: по умолчанию я не могу использовать именованные параметры в своих конкретных сообщениях. Именованный параметр работает только , когда я переопределяю точный ключ в пакете ресурсов jsr303 по умолчанию && , когда я использую то же имя файла пакета ресурсов jsr303 по умолчанию, которое ValidationMessages.properties

Я предпочитаю пока не играть с интерполяцией, поэтому исходный вопрос о том, как узнать, что {0}, {1} или {2} относится к тому, что указано в документации.

8
задан bertie 6 May 2012 в 01:36
поделиться