2017-02-16 2 views
1

私はオブジェクトの検証を起動するメソッドを持っていますが、必ずしも同じクラスオブジェクトではありません。 私はこのコードブロックを使用します。私はオブジェクトを検証しますが、繰り返しはしません。異なるオブジェクトを同じメソッドに渡すことはできますか?

Set<ConstraintViolation<typeClass>> violations = validator.validate(className); 
    for (ConstraintViolation<typeClass> violation : violations) { 
    logger.debug(violation.getMessage()); 
    output = violation.getMessage(); 
} 

を、私はこの方法でそれを使用したいが、私は例えば文字列での方法を行った場合classNameの型クラスはその後、可変である:

をhelloString
public Response getValidations(String typeClass, String helloString) { 
    //do the validation of the string 
} 

は、オブジェクトの名前が、それは私がメソッドに渡す最初のパラメータに依存するオブジェクトの種類ストリングあります。

+0

あの私を怒らせたことをとても簡単だった、答えを見つけました彼らのタイプは同じですか? –

+0

@ M.Prokhorov私は豆の検証で自分のクラスを検証しようとしています。すべてのクラスは自分のバリデーションを持っていますが、私はすべてに同じメソッドを使いたいです。 – Zurquk

+1

'Validator'はすでに' ValidatorFactory'でサポートされているクラスの検証を行いませんか? 'validator.validate(class)'はありません。validator.validate(instance、groups ...)があります。これは、すべてのオブジェクトのバリデーションには十分です。 –

答えて

0

は最後に、私はあなたが両方のことをコンパイル時に「例により検証」と強制する方法を探している...それは-_-

private String makeVerifications(Object instance, Validator validator) { 
    String output = ""; 

    Set<ConstraintViolation<Object>> violations = validator.validate(instance); 
    for (ConstraintViolation<Object> violation : violations) { 
     logger.debug(violation.getMessage()); 
     output += System.getProperty("line.separator") + violation.getMessage(); 
    } 
    return output; 
} 
+0

'violations.stream()。map(ConstraintViolation :: getMessage).collect(Collectors.joining(System.getProperty(" line.separator "));' –

関連する問題