1

私は現在、grails アプリケーションに取り組んでいます。コントローラーに 2 つのコマンド オブジェクト (AccountInfoCommand と EducInfoCommand) があります。私の EducInfoCommand で、 yearGraduated プロパティが、そのバリデーター制約で設定されたbirthDate (AccountInfoCommand のプロパティ) よりも前であるかどうかを確認したかったのです。どうすればいいですか?

これは私の AccountInfoCommand のコードです:

class AccountDetailsCommand  implements java.io.Serializable {

    String username
    String password
    String confirmPassword
    String emailAddress
    Date birthDate        
}

これは EducInfoCommand の私のコードです:

class EducInfoCommand implements java.io.Serializable {

    Integer graduated 
    EducationLevel educationLevel   
    String schoolName 
    String yearGraduated
    String honorsReceived
}

static constraints = {

    yearGraduated nullable: false, maxSize:4, blank: false,  matches: /([0-9]*)/,
      validator: {
            Date.parse('yyyy',it) <= new Date() ? true : false
      }
}

助けてください!ありがとう!

4

1 に答える 1

0

EducInfo が対象とする AccountDetails への参照が必要です。たとえば、にユーザー名フィールドを追加した場合、EducInfoCommandそこからアカウントの詳細を検索できます (コマンド オブジェクトに似た AccountDetails gorm オブジェクトがあると仮定します)。

class EducInfoCommand implements java.io.Serializable { 
    String yearGraduated
    String username
    // ...
}

static constraints = {
    yearGraduated nullable: false, maxSize:4, blank: false,  matches: /([0-9]*)/,
      validator: { val, obj ->
            Date.parse('yyyy',val) > AccountDetails.findByUsername(obj.username).birthDate
      }
}
于 2012-06-21T19:03:13.670 に答える