2011-06-30 10 views
5

Wiosna 3,0 MVCwiosna 3,0 MVC wydaje się być ignorowanie messages.properties

Przede wszystkim, nie znalazłem żadnej dokumentacji dotyczącej messages.properties @springsource Wszystko Znalazłem o nadrzędnych komunikatów o błędach został na różne fora. Jeśli ktoś ma odniesienie do miejsca, gdzie document.properties jest udokumentowane, byłoby fantastycznie. Może messages.properties pochodzi nie z wiosny, ale z specyfikacji java?

Próbowałem po poradę na JSR-303 Type Checking Before Binding Moim celem jest, aby wymienić niektóre komunikaty o błędach typu niezgodność z moich własnych komunikatów o błędach przyjazny dla użytkownika

Moja sytuacja jest następująca:

model

public class Test { 

    private int numberbomb; 

    public int getNumberbomb() { 
     return numberbomb; 
    } 

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

myservlet.xml

<mvc:annotation-driven/> 

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> 

Classes \ messages.properties

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

Wyjście z formularza

Nie można przekonwertować wartości właściwości typu java.lang.String do wymaganego typu int na nieruchomości numberbomb; Zagnieżdżony wyjątek to org.springframework.core.convert.ConversionFailedException: Nie można przekonwertować wartości "three" z typu java.lang.String na typ int; wyjątek zagnieżdżonych jest java.lang.NumberFormatException: Dla ciągu wejściowego: "trzy"

BindingResult.toString() w moim kontrolera

błąd w pole obiektu 'test' w polu 'numberbomb': odrzucone wartość [trzy]; kody [typeMismatch.test.numberbomb, typeMismatch.numberbomb, typeMismatch.int, typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [test.numberbomb, numberbomb]; argumenty []; domyślna wiadomość [numberbomb]]; domyślna wiadomość [Nie udało się przekonwertować wartości właściwości typu "java.lang.String" na wymagany typ "int" dla właściwości 'numberbomb'; Zagnieżdżony wyjątek to org.springframework.core.convert.ConversionFailedException: Nie można przekonwertować wartości "three" z typu 'java.lang.String' na type 'int'; wyjątek zagnieżdżonych jest java.lang.NumberFormatException: Dla ciągu wejściowego: „trzy”]

jest wyświetlanie komunikatów o błędach z <form:errors> źle niestandardowe komunikaty o błędach wyświetlane sposób? Czy muszę dodać coś do wiosennych plików konfiguracyjnych, aby poinformować, że powinien przejrzeć plik messages.properties? Wiosna wydaje się ignorować mój plik messages.properties (który znajduje się w folderze WEB-INF \ classes)

Dzięki za wszelkie pomysły!

Odpowiedz

4

Mój współpracownik wskazał mi właściwy kierunek. Zmieniłem komponent bean messageSource w moim serwisie.xml

z

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

do

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

Z jakiegoś powodu to rozwiązało problem. Dzięki współpracownik! :)

+1

Ten powód można znaleźć w dokumentacji! - http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/ReloadableResourceBundleMessageSource.html - "..obsługuje ponowne ładowanie plików właściwości poprzez ustawienie" cacheSeconds ", a także poprzez programowe kasowanie pamięci podręcznej właściwości Ponieważ serwery aplikacji zwykle buforują wszystkie pliki załadowane ze ścieżki klasy, konieczne jest przechowywanie zasobów w innym miejscu (na przykład w katalogu "WEB-INF" aplikacji internetowej) .W przeciwnym razie zmiany plików w Ścieżka klas nie zostanie odzwierciedlona w aplikacji. " – Ross

Powiązane problemy