Spring 3.0 MVC, кажется, игнорирует messages.properties - PullRequest
5 голосов
/ 30 июня 2011

Spring 3.0 MVC

Прежде всего, я не нашел никакой документации относительно messages.properties @ springsource Все, что я нашел о переопределении сообщений об ошибках, было на разных форумах. Если у кого-то есть ссылка на документацию messages.properties, это было бы замечательно. Может быть, messages.properties не из весны, а из спецификации java?

Я пытался следовать совету Проверка типа JSR-303 перед привязкой Моя цель - заменить некоторые сообщения об ошибках несоответствия типов моими удобными сообщениями об ошибках

Моя ситуация выглядит следующим образом:

Модель

public class Test {

    private int numberbomb;

    public int getNumberbomb() {
        return numberbomb;
    }

    public void setNumberbomb(int numberbomb) {
        this.numberbomb = numberbomb;
    }
}

myservlet.xml

<mvc:annotation-driven/>

1019 * JSP *

<form:form id="test" method="post" modelAttribute="test">

<form:errors path="*"/>

<form:label path="numberbomb">numberbomb</form:label>
<form:input path="numberbomb"/>

</form:form>

классы \ messages.properties

typeMismatch=bad value you bad bad person
test.numberbomb=you are driving me crazy with these bad inputs

Вывод из формы

Не удалось преобразовать значение свойства типа java.lang.String в требуемый тип int для свойства numberbomb; вложенным исключением является org.springframework.core.convert.ConversionFailedException: невозможно преобразовать значение «три» из типа java.lang.String в тип int; Вложенное исключение - java.lang.NumberFormatException: для входной строки: "three"

BindingResult.toString () в моем контроллере

Ошибка поля в объекте 'test' в поле 'numberbomb': отклоненное значение [три]; коды [typeMismatch.test.numberbomb, typeMismatch.numberbomb, typeMismatch.int, typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [test.numberbomb, numberbomb]; аргументы []; сообщение по умолчанию [номерная бомба]]; сообщение по умолчанию [Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'int' для свойства 'numberbomb'; вложенное исключение - org.springframework.core.convert.ConversionFailedException: невозможно преобразовать значение «три» из типа «java.lang.String» в тип «int»; Вложенное исключение - java.lang.NumberFormatException: для входной строки: «три»]

Отображает ли сообщение об ошибке с помощью <form:errors> неправильный способ отображения пользовательских сообщений об ошибках? Нужно ли что-то добавить в конфигурационные файлы Spring, чтобы указать, что нужно смотреть messages.properties? Spring, похоже, игнорирует мой файл messages.properties (который находится в папке WEB-INF \ classes)

Спасибо за любые идеи!

1 Ответ

4 голосов
/ 01 июля 2011

Мой сотрудник указал мне правильное направление.Я изменил bean-компонент messageSource в myservlet.xml

с

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="messages" />
    <property name="cacheSeconds" value="1" />
</bean>

на

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages"/>
</bean>

По любой причине это решило проблему.Спасибо, коллега!:)

...