2010-11-25 77 views
3

我試圖做一些春天驗證與屬性文件中的錯誤消息。 但我發現所有的例子似乎都有硬編碼的值,或者從屬性文件獲得,但使用驗證器類並在那裏檢索它。與@valid彈簧驗證在哪裏/如何自定義錯誤消息

我的設置有點不同。 我在我的requestmapping中使用了@Valid註解,而我的@Valid類使用@NotNull等 我見過一些例子,其中人們做@NotNull(message =「blablabla」); 但是這也是硬編碼的,我想把這些消息放在一個屬性文件中,這樣我就可以很容易地編輯它,所以我可以在未來輕鬆實現i18n。

關於如何實現這一點的任何輸入,將不勝感激。

回答

8

它的工作方式與明確的Validator - you declare a MessageSource完全相同,並在.properties文件中寫入錯誤消息。消息代碼形成爲:constraintName.modelAttributeName.propertyName

publib class Foo { 
    @NotNull private String name; 
    ... 
} 

@RequestMapping 
public String submitFoo(@Valid Foo foo, ...) { ... } 

messages.properties

NotNull.foo.name=... 

MessageSource聲明:

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