2010-11-25 3 views
3

Ich versuche, einige Feder Validierung mit den Fehlermeldungen in Properties-Dateien zu tun. Aber die Beispiele, die ich finde, scheinen alle die Werte hardcoded zu haben oder aus einer Eigenschaftendatei zu bekommen, aber eine Validator-Klasse zu verwenden und sie dort abzurufen.Feder Validierung mit @valid wo/wie benutzerdefinierten Fehlermeldungen

Mein Setup ist ein bisschen anders. Ich verwende die Annotation @Valid in meinem Anforderungsmapping, und meine Klasse @Valid verwendet @NotNull usw. Ich habe einige Beispiele gesehen, wo Leute @NotNull (message = "blablabla"); Aber das ist auch hardcoded, und ich möchte die Nachrichten in eine Eigenschaftendatei legen, so dass ich es leicht im laufenden Betrieb bearbeiten kann und so I18n in der Zukunft leicht implementieren kann.

Jede Eingabe, wie dies zu erreichen würde geschätzt.

Antwort

8

Es funktioniert genau so wie mit expliziten Validator - Sie declare a MessageSource und schreiben Fehlermeldungen in .properties Dateien. Nachrichten-Codes werden gebildet, wie constraintName.modelAttributeName.propertyName:

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

.

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

messages.properties:

NotNull.foo.name=... 

MessageSource Erklärung:

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