2016-11-14 7 views
1

hibernateバリデータでSpring RestControllerを使用する。辞書をチェックしてSpringを検証する

一部の辞書(プリセット配列または一部のDB)に表示されている検証フィールドをチェックする検証アノテーションを作成する必要があります。

例えば、私はいくつかの豆

@Service 
public class MyDict { 

    public boolean containsWord(String word) { 
     ... 
    } 
} 

そして、いくつかのデータを持って、私は

public class ResponseData { 

    @IsInDictionary(MyDict.class) 
    private String word; 

} 

とするとき、私は私がバリをしたい、直接検証を休止、またはRequestMapping方法で@Validアノテーションで呼び出しをチェックMyDict beanメソッドcontainsWord(word)を呼び出します。

誰にもアイデアはありますか?

あなたがあなた自身の注釈を定義します(この場合は、辞書検索)あなたの検証ロジックを実行します独自の Validatorを定義する必要が

答えて

1

あなたはここにこれについての詳細読むことができます:https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-constraintannotation

独自のアノテーションを作成した後は、ConstraintValidator<YourCustomAnnotation, String>を拡張するだけで、あなたはかなり準備ができています。方法isValid()は、あなたが言及したロジックの中で実行する必要があります。containsWord(word)

あなたのカスタムバリデーターはSpring管理のBeanになるため、自由に材料を注入できます。たとえば、DBルックアップを実行できます。この場合、辞書を挿入してそこでチェックを行う必要があります。

+0

もしあなたが正しく理解していれば、自分のバリデーターをSpring Beanと言いますと、私のBean(私のクラスの別のインスタンスではありません)がバリデーターとして使用されますか? – dmitryvim

+0

@dmitryvim独自のアノテーションを作成した場合、検証のためにそれを使用している定義済みのメカニズムがあります。簡単に言えば、ConstraintValidatorを適切に拡張するだけでよいのです。私は最近これをやったし、それは動作します:) –

関連する問題