13

クライアントのアプリに Android saripaar ライブラリを使い始めました。フィールドのカスタム検証を追加したいと考えていました。ただし、カスタム アノテーションを作成する方法はないようです。バリデーターにルールを手動で入力する必要があります。

同じカスタム注釈を作成するにはどうすればよいですか?

4

1 に答える 1

22

(開示:私は著者です)

Saripaar v2では、カスタム アノテーションを定義できます。

方法は次のとおりです。

ステップ 1カスタム アノテーションを次のように定義します。RUNTIME保持ポリシーがあり、注釈がFIELD要素タイプを対象としている必要があることを確認してください。および属性は必須であるため、名前とタイプに注意してくださいmessagemessageResId

@ValidateUsing(HaggleRule.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Haggle {
    public int messageResId()   default -1;                     // Mandatory attribute
    public String message()     default "Oops... too pricey";   // Mandatory attribute
    public int sequence()       default -1;                     // Mandatory attribute

    public double maximumAskingPrice();                         // Your attributes
}

ステップ 2AnnotationRuleクラスを拡張してルールを定義します。

public class HaggleRule extends AnnotationRule<Haggle, Double> {

    protected HaggleRule(Haggle haggle) {
        super(haggle);
    }

    @Override
    public boolean isValid(Double data) {
        boolean isValid = false;
        double maximumAskingPrice = mRuleAnnotation.maximumAskingPrice();

        // Do some clever validation....

        return isValid;
    }
}

ステップ 3ルールを登録します。

Validator.registerAnnotation(Haggle.class); // Your annotation class instance

そのような単純な。必要に応じてソースコードを見てください。Saripaar v2 が Maven Central で利用できるようになりました。

于 2014-12-09T08:19:20.350 に答える