2015-01-18 4 views
0

obj.confirmPassword이 항상 null 인 이유를 찾을 수 없습니다. confirmPassword이 과도기의 일부가 아니면 모두 정상적으로 작동합니다.Grails : 사용자 정의 유효성 검사기에서 일시적 변수에 액세스 할 수 없습니까?

String confirmPassword 
boolean enabled = true 
boolean accountExpired 
boolean accountLocked 
boolean passwordExpired 

static transients = ['springSecurityService', 'confirmPassword'] 

static constraints = { 
    username blank: false, unique: true, minSize: 4, maxSize: 64 
    password blank: false, nullable: false, minSize: 4, maxSize: 64, validator: {password, obj -> 
     def password2 = obj.confirmPassword 
     password2 == password ? true : ['invalid.matchingpasswords'] 
    } 
    userFullname blank: false, minSize: 4, maxSize: 64 
} 

이 하나 개 던져 NullPointer 저장()가 호출된다

String confirmPasswordField 
    static transients = ['springSecurityService', 'confirmPasswordField'] 

    static constraints = { 
     confirmPasswordField bindable: true, nullable:true, blank: false 
     username blank: false, unique: true, minSize: 4, maxSize: 64 
     password blank: false, nullable: false, minSize: 4, maxSize: 64, validator: {password, obj -> 
      def confirmPassword = obj.confirmPasswordField 
      confirmPassword == password ? true : ['invalid.matchingpasswords'] 
     } 
     userFullname blank: false, minSize: 4, maxSize: 64 
    } 

나는 confirmPasswordField에 관한 모든 물건을 언급하는 경우 - 저장() 괜찮습니다.

답변

0

보안을 위해 일시적 변경 사항은 더 이상 자동 바인딩되지 않습니다. 하지만 '바인딩 가능'제약 조건을 추가하면 쉽게 작동 할 수 있습니다 (http://grails.org/doc/latest/ref/Constraints/bindable.html 참조). 이렇게 confirmPassword를 사용할 수 있습니다.

confirmPassword(bindable: true, nullable:true, blank: false)