2013-03-14 2 views
-1

Grails에서 도메인 객체의 유효성을 검사하는 일반적인 방법은 도메인 객체에 정적 제약 조건 클로저를 정의한 다음 myObject.validate()를 호출하는 것입니다.Grails 검증 no 제약 블록

유효성 검사 호출에 유효성을 검사해야하는 것을 전달하고 제약 블록을 정의하지 않을 수 있습니까?

나는 스프링 밸리데이터 인스턴스로 할 수 있다고 생각하지만 Grails (최대, 이메일 등)의 "맛있는 점"이있는 쉬운 방법이 있습니까?

답변

-1

그런 접근법을 상상해보십시오. 정적 제약 조건이있는 @Validateable groovy 클래스를 필요한 Grails 항목으로 만듭니다. 도메인에서와 같이 도메인을 확장하여 모든 필드를 소유하고 도메인 인스턴스의 모든 입력란을 해당 객체의 새 인스턴스로 복사하는 방법을 제공하십시오 (예 : 생성자를 사용하여. 해당 클래스의 validate() 전화로 문의하십시오.

class MyDomain { 
    String email 
    MyDomain() {} 
    MyDomain(email) { 
     email = this.email 
    } 
} 
@Validateable 
class MyDomainCustomValidator extends MyDomain { 
    MyDomainValidator() {} 
    MyDomainValidator(domain) { 
     super(domain.email) 
    } 
    static constraints = { 
     email email: true 
    } 
} 

def d = new MyDomain('[email protected]') 
new MyDomainCustomValidator(d).validate() 
+0

음 .. 그것은 확실히 내가 찾고 있어요되지 않는 것. 차라리 d.validate (thisConstraint)와 같은 일을 할 수 있습니다. 나는 그것이 가능하다면 모른다. ... – Hoof

+0

이 코드는별로 의미가 없다. –

+0

@James, 이유가 무엇입니까? 해당 도메인 외부에서 정의 된 Grails 제약 조건을 도메인에 적용 할 수있는 다른 방법이 있습니까? – eugene82

0

.validate(["fieldA", "fieldB"])에 필드 목록을 전달할 수 있으며 해당 필드의 유효성을 검사합니다. 해당 필드에 대한 제한 조건을 정의하기 위해 여전히 제한 블록이 필요합니다. Grails의 사용 설명서에서

: 는 ". 유효성 검증 방법은 속성의 이름이 포함 된 옵션 목록 인수가 이름의 목록을 지정하면, 속성 만이 확인 될 것입니다 검증을 받아."

는 @의 eugene82에 응답하려면 :

@Validateable 
class MyDomainValidator { 
String email 
static constraints = { 
email(email:true) 
} 
} 

MyDomain m = new MyDomain()... 
MyDomainValidator mv = new MyDomainValidator().. 
mv.properties = m.properties 
mv.validate() 
+0

물론입니다. 하지만 그건 내 질문에 대답하지 않습니다 ... – Hoof

+0

그럼 당신의 질문을 이해하지 못합니다 –

+0

글쎄, 내 질문 상태 : "아니 제약 블록"- 심지어 주제에. 당신은 제약 블록을 사용하는 것이 좋습니다 .. 그럼 .. 그림 이동 – Hoof

관련 문제