2011-06-30 19 views
5

bahar 3.0 MVC tümbahar 3,0 MVC messages.properties

İlk görmezlikten geldiği görülmekte, ben muhtelif olmuştur basan hata iletileri hakkında buldum springsource Herşey @ messages.properties ilişkin herhangi bir belge bulamadı forumları. Herhangi birinin, messages.properties'in belgelenmesinin nerede olduğuna dair bir referans varsa, bu harika olur. Belki messages.properties ilkbahardan değil, bir java özelliğinden geliyor?

Ben JSR-303 Type Checking Before Binding My hedefe tavsiye takip denedi şöyle

Benim durumdur kendi kullanıcı dostu hata mesajları ile bazı tür uyumsuzluğu hata iletileri değiştirmektir:

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/> 
formundan messages.properties \

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> 

sınıfları

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

Çıkış

özelliği için gerekli olan türü int tipi java.lang.String özellik değeri dönüştürmek için başarısız numberbomb; nested exception org.springframework.core.convert.ConversionFailedException: int türüne java.lang.String türünden "üç" değerini dönüştüremiyor; Giriş dizesi için: 'numberbomb' sahada nesne 'test' in "üç" benim denetleyicisi içinde

BindingResult.toString()

Alan hatası: iç içe özel java.lang.NumberFormatException olduğunu reddedilen değer [üç]; kodlar [typeMismatch.test.numberbomb, typeMismatch.numberbomb, typeMismatch.int, typeMismatch]; argümanlar [org.springframework.context.support.DefaultMessageSourceResolvable: kodlar [test.numberbomb, numberbomb]; argümanlar []; varsayılan mesaj [numberbomb]]; varsayılan ileti ['java.lang.String' türünün özellik değeri 'numberbomb' özelliği için 'int' türüne dönüştürülemedi; nested exception org.springframework.core.convert.ConversionFailedException: 'int' yazmak için 'java.lang.String' türünden "üç" değerini dönüştüremiyor;

yanlış yol gösterim özel hata iletileri <form:errors> ile hata mesajları görüntüleniyor mı "üç"]: Giriş dizesi için: iç içe özel java.lang.NumberFormatException nedir? Messages.properties'e bakmak için yay yapılandırma dosyalarına bir şeyler eklemem gerekir mi? Bahar benim messages.properties (WEB-INF \ sınıfları klasöründe bulunduğu) Herhangi fikirler için

Teşekkür dosyasını görmezden gibi görünüyor!

cevap

4

Bir arkadaşım beni doğru yönde işaret etti. Myservlet içinde messageSource bean değiştirdim.

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

için

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

gelen xml

Sebebi ne olursa olsun, bu sorunu çözdü. Teşekkürler dostum! :)

+1

Bu nedenle dokümantasyonda bulunabilir! - http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/ReloadableResourceBundleMessageSource.html - "..." cacheSeconds "ayarıyla özellik dosyalarının yeniden yüklenmesini ve ayrıca uygulama önbelleğini program aracılığıyla temizleme yoluyla.Uygulama sunucuları sınıf yolundan yüklenen tüm dosyaları genellikle önbelleğe aldığından, kaynakların başka bir yerde (örneğin, bir web uygulamasının "WEB-INF" dizininde saklanması) gerekli olması gerekir. sınıf yolu uygulamaya yansıtılmayacaktır. " – Ross