2012-08-09 3 views
2

사람 클래스가 있다고합시다. 사람에게는 두 명의 자녀가 있습니다 작성자의사. Person 클래스는 username 속성과 함께 제공됩니다 (종종 그렇듯이). 상속을 통해 Builder 클래스와 Doctor 클래스에도 사용자 이름이 있습니다.부모/자식 상속 관계가있는 Grails i18n 유효성 검사 오류 메시지

이제 i18n 유효성 검사 메시지를 미화하고 싶습니다. 나는 내 수업

person.email.blank=Email is required 

의 3에 적용 할 생각에 다음을 추가하지만, 자식 클래스의 객체의 유효성을 검사 할 때 사용되지 않습니다. 나는 다음과 같은

doctor.email.blank=Email is required 
builder.email.blank=Builder is required 

을 추가하면 내가 원하는 결과를 얻을 수 있지만, 모든 경우에 적용 할 수있는 DRY로 될 것 같지 않습니다. 누구든지 이에 대해 생각하고 있습니까? 어쩌면 나는 다만 무언가를 잘못하고있다!

+0

어떨까요 : email.blank? – heikkim

+0

의사와 작성자가 개인 수업의 속성을 상속하는 경우 person.email.blank 행 외에 다른 항목이 필요합니까? 사람. 이메일. 쓸모 없지 않니? –

+0

@JohnMoses 내 경험으로는 person.email.blank가 서브 클래스에서 사용되지 않고, 유효성 검사 오류가 기본값 인 "Field Person의 Class Person과 오류"와 같은 Grails 기본값으로 기본 설정됩니다. – 34m0

답변

0

필요한 모든 메시지에 대해 사용자 지정 유효성 검사기와 단일 메시지를 사용하여이 작업을 수행 할 수있었습니다. 속성에서

파일 :

default.isRequired= {3} is required 
email=Email 
otherProperty=Other property 

도메인 클래스 :

email validator: {val, obj -> obj.isRequiredValidator(val, "email") } 
email validator: {val, obj -> obj.isRequiredValidator(val, "otherProperty") } 

private isRequiredValidator(val, key) { 
    if (!val) 
    return [default.isRequired, messageSource.getKey(key)] 
} 

결과를 유효성 검사를 (호출 한 후)

"다른 속성은 필요합니다" "이메일이 필요합니다"하고있을 것

도메인 클래스간에 사용자 정의 유효성 검사기 메소드를 공유하여이를 재사용 할 수 있습니다.

관련 문제