0

以前は主に PHP を使用していたので、フォームにカスタム検証シナリオを追加する最良の方法は何かという質問があります。ドメイン内にすべての制約があるとしますが、フォームがドメインにバインドされている特定のコントローラー アクションの下で、何らかのカスタム検証を追加したいとします (議論のために、日付があり、このシナリオでは、2 週間以上先になるはずです)。それを行うための最良のアプローチは何ですか?

ありがとう!

4

2 に答える 2

2

必要に応じて、制約付きのコマンド オブジェクトを使用できます。

@grails.validation.Validateable
class CommandObject {
    Date date

    static constraints = {
        date(/*constraint here*/)

    }
}

編集:

2 番目の質問については、はい、を使用してドメイン オブジェクトからコマンド オブジェクトに制約を共有できます。importFrom [EntityName]ドキュメントの例を参照してください。

ドメイン オブジェクト:

class User {
    String firstName
    String lastName
    String passwordHash
    static constraints = {
        firstName blank: false, nullable: false
        lastName blank: false, nullable: false
        passwordHash blank: false, nullable: false
    }
}

コマンド オブジェクト:

class UserCommand {
    String firstName
    String lastName
    String password
    String confirmPassword   
    static constraints = {
        importFrom User
        password blank: false, nullable: false
        confirmPassword blank: false, nullable: false
    }
}

制約の共有

于 2013-02-02T21:54:31.707 に答える
0

コントローラーに到達する前に、jquery を使用してフォームの検証を行うことをお勧めします。必要に応じて、gsp 自体で個別の検証を行うこともできます (つまり、入力フィールドが必須であることの確認、電子メールのみの受け入れ、整数のみの受け入れなど)。コントローラーでこれを行うこともできます。しかし、jqueryを使ったフォームバリデーションはもう十分だと思います:)

于 2013-02-03T11:33:47.850 に答える