2011-08-17 21 views
5

Bu gibi basit bir dersim var,Hazırda bekleyen doğrulayıcıda özel hata iletileri nasıl eklenir?

import javax.validation.constraints.NotNull; 
import org.hibernate.validator.constraints.Length; 

public class Form implements Serializable { 
    @NotNull 
    @Length(min = 2, max = 20) 
    private String lastName; 
} 

Sınıfında dosyam var. Daha sonra aşağıdaki gibi, Bahar fasulye ile yüklenir,

<bean name="validator" 
     class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
    <property name="validationMessageSource"> 
     <ref bean="resourceBundleLocator"/> 
    </property> 
</bean> 

<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>classpath*:messages.properties</value> 
     </list> 
    </property> 
</bean> 

Tek istediğim fasülyeye göre özelleştirilmiş hata mesajları almak. Diğer bir deyişle, her ConstraintViolation nesnesinin, varsayılan dosya yerine özellik dosyamda tanımladığım hata iletisini döndürmesini istiyorum. Bu özelliğe {xxx.yyyy.zzzz} biçiminde bir değer eklemek ve bu iletiyi messages.properties dosyasından göndermek mümkün mü?

ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
    Validator validator = factory.getValidator(); 
    Set<ConstraintViolation<Form>> inputErrors = validator.validate(form); 

@NotNull ve @Length için varsayılan mesajı özelleştirmek isterseniz, bunu nasıl yapabilirim?

Hazırda bekletme doğrulamasındaki deneyimim sıfır, Herhangi bir örnek kod veya adım adım adımı takdir edilecektir.

cevap

4

İletinin değerlerini tutan bu kaynak paketi dosyası var.

Sanırım mesajı el ile geçersiz kılmak için @NotNull ek açıklama yolunu kullanmalısınız! gibi javax.validation.constraints.NotNull=Notnull error happened! veya benzeri bir şey! Bunun için burada

Görünüş:

Hibernate Validator - The error message

Umut yardımcı olur

+0

Evet fritz, (bu doğru, ama ben pek @NotNull çünkü varsayılan messageTemplate yolu geçersiz kılmak istemiyorum ve Tabii ki diğer notlarım) Form sınıfımda. Her özellik için belirli hata iletileri eklemek istiyorum. Özel MessageInterpolator'ı uygulamadan ** kolay bir yol var mı? Özel mesaj görüşme uygulamalarının bir çift buldum, ama bunların hiçbirini anlamadım. Bana tam kaynak kodu ile mümkün olan en basit çözümü verebilirsen! – nash

+0

ve ayrıca bu {vvvv.ssss.rrrt.message} gibi bir biçim ile her bir doğrulama ek açıklama üste mesaj özniteliği çalıştı ama ConstraintViolation arasında getMessage çağrıldığında bunun, ileti olduğu gibi yazdırıldığı. – nash

+0

Görüyorum! aklıma gelen tek yol, bir mesaj tutan özel bir doğrulayıcı oluşturmaktır! @MyNotNull + mesajı gibi ?! veya böyle bir şey yapabilirdiniz ' ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Araba = yeni Araba (boş); Seti > constraintViolations = validator.validate (araba); assertEquals (1, restrictViolations.size()); assertEquals ("null olmayabilir", constraintViolations.iterator(). Next(). GetMessage()); ' ve iletide nesneyi durdurun! – stereoscope

İlgili konular