2016-12-10 3 views
0

Grails 2.3.7 프로젝트를 Grails 3.2.3으로 업그레이드하려고합니다. 2.3.7, 나는 사용자 정의 제약 조건을 사용하여 /conf/Config.groovy에이를 등록 : Grails에 3.2,사용자 정의 제약 등록하기

static constraints = { 
    approvedDate(description: '>= applyDate') 
} 

그러나 :

org.codehaus.groovy.grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint) 

은 그 때 나는 도메인이 같은 것을 사용할 수 있습니다 0.3, 나는 오류 다음있어 /conf/application.groovy에 명령 위에 넣을 (패키지 이름에서 org.codehaus.groovy 제거)하는 경우 :

Error occurred running Grails CLI: No signature of method: groovy.util.ConfigObject.registerNewConstraint() is applicable for argument types: (groovy.util.ConfigObject, groovy.util.ConfigObject) values: [[:], [DESCRIPTION_CONSTRAINT:[:]]] 

I은 ​​예고 검증 클래스가 다소 변경된다으니 Grails 3. 그러나 Grails 검증의 g 제약 클래스도 여전히 같은 오류를 가지고있다.

발견 된 모든 유효성 검사 플러그인은 Grails 3 이전에 오래 버려졌습니다. Grails 3.2에서 새로운 제약 조건을 등록 할 수있는 문서를 찾을 수 없습니다.

+0

이 시도 : 'org.codehaus.groovy.grails.validation.ConstrainedProperty합니다. registerNewConstraint ('description', my.validation.DescriptionConstraint.class) ' [DOC] (http://docs.grails.org/3.1.x/api/grails/validation/ConstrainedProperty.html#registerNewConstraint) – zfChaos

+0

@zfChaos 감사합니다. . 그러나 그것은 여전히 ​​같은 오류가 있습니다. 더욱이,'import grails.validation.ConstrainedProperty'는'class grails.validation.ConstrainedProperty'를 해결할 수 없습니다.이 파일은 Grails 환경에 아직없는 것 같습니다. 대신'/ grails-app/init/Application.groovy'에 등록하려고합니다. 거기에 오류가 없습니다. 그러나 프로젝트의 다른 부분을 포팅하여 아직 작동하는지 테스트 할 수 없습니다. – Meam

답변

1

/grails-app/init/BootStrap.groovy에 ConstrainedProperty.registerNewConstraint을 호출하면 작동합니다. (Grails 3.2.4에서 테스트 됨)

class BootStrap { 
    def init = { servletContext -> 
    grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint) 
    // The rest of bootstrap code 
    } 
} 

참고. 이전에는 /grails-app/init/Application.groovy에서 main()이라고 부릅니다. 실행중인 응용 프로그램에서 작동합니다. 그러나 통합 테스트에서는 작동하지 않습니다.

0

또 다른 방법 당신은 Grails의의 2.XX에서와 같이 runtime.groovy에 제약을 config에서 runtime.groovy를 작성하고 등록 할 수 있습니다 :

org.codehaus.groovy.grails.validation.ConstrainedProperty.registerNewConstraint('description', my.validation.DescriptionConstraint)