문제

GRAILS 2.3.4 생성 스캐 폴딩 방법이 유효성 검사를 수행하는 방법을 이해하려고합니다.예를 들어, 이것은 클럽 도메인 저장 방법을 위해 생성 된 것입니다.

def save(Club clubInstance) {
    if (clubInstance == null) {
        notFound()
        return
    }

    if (clubInstance.hasErrors()) {
        respond clubInstance.errors, view:'create'
        return
    }

    clubInstance.save flush:true

    request.withFormat {
        form {
            flash.message = message(code: 'default.created.message', args: [message(code: 'clubInstance.label', default: 'Club'), clubInstance.id])
            redirect clubInstance
        }
        '*' { respond clubInstance, [status: CREATED] }
    }
}
.

저장 작업의 클럽 ClubInstance 매개 변수에 대한 데이터 바인딩에 대한 첫 번째 유효성 검사 단계에서 발생하는 것을 이해합니다.그래서 모든 데이터 바인딩 오류는 if (clubinstance.haserrors ())에서 잡히게됩니다.

ClubInstance.Validate ()에 대한 명시 적 호출이 표시되지 않습니다.그러나 그것은 일하는 것처럼 보입니다.따라서이 메서드는 제약 조건 위반이있는 경우이 메서드의 유효성을 검사하고 다시 반환합니까?

더 중요한 것은 생성 된 스캐 폴딩 컨트롤러를 Grails에서 기본적인 크루이드를 수행하는 가장 좋은 사례 방식으로 사용하지 않아야합니까?

도움이 되었습니까?

해결책

컨트롤러 조치 방법에 매개 변수를 포함하면 Grails는 데이터 바인딩을 수행합니다.문자열, 숫자, 부울 등과 같은 간단한 유형의 경우 매개 변수 이름이 매개 변수 이름과 일치하며 일치하는 항목이 있고 매개 변수 문자열을 요청한 유형으로 변환하는 데 매력적인 방법이 있습니다.

복잡한 유형의 경우 매개 변수는 명령 객체로 취급됩니다.컨트롤러 클래스에 정의 된 경우 AST 변환을 통해 컴파일 타임에서 유효성이 없습니다.클래스가 다른 곳에서 정의 된 경우 (예 : src / groovy) grails.validation.Validateable 주석으로 주석을 달아야하며 도메인 클래스 인 경우 분명히 유효성이 있습니다.어떤 경우에도 인스턴스가 생성되고 데이터 바인딩이 끝나면 Validate ()가 호출됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top