9

私はgrailsとgroovyの初心者です。開始日と終了日を持つ Project ドメインクラスがあります。終了日が開始日よりも大きくなる必要があることを指定する制約を入れたいです(さらに、プロジェクトの別の子オブジェクトは、親プロジェクトの日付で開始日と終了日を検証する必要があります)。これは最小制約で可能ですか、それとも別の場所に配置する必要がありますか? 一意の制約では、2 つのプロパティをそのようにリンクできますが、最小/最大制約がそれを許可することを願っています。私が試してみました

startDate(blank:false)
endDate(blank:false, min:'startDate')

プロパティstartDateがプロジェクトで利用できないというエラーがスローされます

4

1 に答える 1

15

カスタムバリデーターを使用してみてください:

static constraints = {
    endDate(validator: { val, obj ->
        val?.after(obj.startDate)
    })
}

valフィールドの値であり、obj検証されるオブジェクトへの参照です。クロージャーには必要なロジックを含めることができるため、質問で説明している方法で検証を拡張できます(を使用して参照する子オブジェクトにアクセスすることによりobj)。

カスタムバリデーターは非常に柔軟です。ドキュメントをご覧ください。カスタム メッセージを返すのが理想的です。その方法は、上記のリンク先のドキュメントにも記載されています。

于 2010-11-02T19:03:33.773 に答える