2012-03-14 7 views
1

ここでは、私が想像できる最も基本的なスプリングバリデータのサンプルがあります:-)。デスクトップアプリケーションであるため、コンテナを実行していないため、特定の時点でvalidateを呼び出すはずです。
springコンテナと同じ方法でvalidateメソッドを呼び出すユーティリティはありますか?またはvalidateを呼び出すだけで十分ですか?この場合、検証するために渡さなければならないErrorsオブジェクトの具体的な実装は何ですか?ここでデスクトップアプリケーションのスプリング検証

は(主に装飾)の例である:

まず私はStirngのfirstNameプロパティと文字列secondNameプロパティで、Personクラスを持っている:

public static class Person { 
    public static final String PROP_FIRSTNAME = "firstName"; 
    String firstName; 
    public static final String PROP_SECONDNAME = "secondName"; 
    String secondName; 

    public String getFirstName() {return firstName;} 
    public void setFirstName(String firstName) {this.firstName = firstName;} 

    public String getSecondName() {return secondName;} 
    public void setSecondName(String secondName) {this.secondName = secondName;} 

} 

その後、私は単にPersonValidatorを持っていますPersonがnullではないfirstNameを持っているかどうかを確認してください:

public static class PersonValidator implements Validator { 

    public boolean supports(Class<?> clazz) { 
     return Person.class.isAssignableFrom(clazz); 
    } 

    public void validate(Object target, Errors errors) { 
     ValidationUtils.rejectIfEmpty(errors, Person.PROP_FIRSTNAME , "First name must be "); 
    } 

} 

これで問題はありますか?

public static void main(String [] args) { 

    Person p = new Person(); 

    PersonValidator v = new PersonValidator(); 

    //HOW TO PERFORM VALIDATION? 
    //v.validate(p, null) 

} 

答えて

3

明らかに私はこれがあなたが求めているのではないことを知っていますが、ここにはあります。

単純な検証が後であり、IoCコンテナの使用を計画していない場合は、代わりにBeanValidationなどを使用することをお勧めします。

Hereは一例です。

+0

は、おそらくあなたがそこに返信することができます:ここで

は、私が何を意味するかを明確にするいくつかのサンプルコードですhttp://stackoverflow.com/questions/9693656/javabeans-validation-デスクトップアプリケーション/ 9695098#comment12334789_9695098 JSR 303について言えば、HibernateまたはSpring 3の実装で利用可能なJava EE仕様です。 – AgostinoX

+1

AgostinoX:BeanValidationはJSR 303です.JEEで使用されていますが、standart javaでも使用できます。参照の実装は "Hiberante Validator"です。これはHibernate(ORM)ではありません。つまり、スタンドアロンアプリケーションでperferctを使用することができます。 – Ralph

+0

インキュベータを通過したばかりのApache BVal実装のように見えるので、これも別の方法です。 http://incubator.apache.org/bval/cwiki/2012/02/21/apache-bval-has-graduated-the-incubator.html – ebaxt

-2

オブジェクトの有効性を確認し、完全修飾されたクラス名でBindExceptionオブジェクトを作成するだけです。

hereのように、ValidationUitls.invokeValidator()メソッドを使用してBeanを検証します。

私が入れた最初の質問です
ApplicationContext context = new  ClassPathXmlApplicationContext("applicationContext.xml"); 

    Person person = context.getBean(Person.class); 

    PersonValidator personValidator = context.getBean(PersonValidator.class); 

    BindException errors = new BindException(person, Person.class.getName()); 
    ValidationUtils.invokeValidator(personValidator, person, errors); 

    if(errors.hasErrors()){ 
     System.out.println(errors.getAllErrors()); 
    } 
関連する問題