2009-08-18 2 views
1

나는 분명히 Grails로 시작하고있다. 나는 도메인 클래스와 컨트롤러를 만들고, 컨트롤러에 내 자신의 논리를 추가했으며, 아무 것도 잘못되지 않는 한 모든 것이 제대로 작동하고 있습니다.Grails에서 오류 처리를 어떻게 구현합니까?

내 사용자 정의 컨트롤러 액션은 다음과 같습니다

def create = { 
    try 
    { 
     // Get the parameters. 
     def uid=params["uid"] 
     def pwd=params["pwd"] 
     if (!uid || !pwd) 
     { 
      throw new Exception('User ID and password are required') 
     } 
     /* other code */ 
    } 
    catch (Exception ex) 
    { 
     println ex.getMessage() 
    } 
} 

내 코드 (/* other code */)가 작동 중이면 벌금을. 그러나 예외가 발생하면 콘솔에 오류 메시지가 인쇄되고 브라우저는 404 오류를 발생시킵니다. 분명히, 이것은 갈 길이 아닙니다.

어떻게해야할까요? 당신의 BootStrap.groovy 파일에서

TIA,

답변

-3

당신이 다른 자바 예외에 대한 포괄 핸들러를 설정 할 수 있습니다. Here에 대한 기사입니다.

+0

-1 : 그렇기 때문에 대답을 연결해서는 안됩니다. 링크 부패. –

4

제공된 코드 스 니펫을 기반으로 사용자 입력 (아마 양식)의 유효성 검사가 실제로 필요한 것 같아요. 이 경우 예외를 던지면 갈 길이 없습니다. 예외적 인 (예기치 않은 일, 일반적으로 정상적인 작동 중에 발생해서는 안되는 것)이 발생하는 경우에만 예외를 throw해야합니다.이 방법은 다른 프로그래밍 언어에도 적용됩니다.

Grails는 사용자 입력의 유효성을 검사하는 데 매우 효과적인 지원을 제공합니다. 컨텍스트에 따라 도메인 클래스에 제약 조건을 정의하거나 command objects을 사용하여 제약 조건을 정의해야합니다 (유효성을 검사 할 필드가 도메인 클래스에서 직접 지원되지 않는 경우). 이 방법으로 Grails는 제약 조건 (크기, 공백/비 공백 또는 심지어 RegExp 제약 조건과 같은 다양한 종류가 있음)에 대해 자동으로 사용자 입력의 유효성을 검사하고 오류 및 해당 메시지를 도메인 클래스에 저장합니다. 그런 다음 해당 지역화 된 오류 메시지를 양식 (보기)에 쉽게 표시 할 수 있습니다. 참조하는 입력 필드 바로 옆에 오류를 표시하는 것이 좋습니다.

참조 문서 - 특히 chapter 7 (validation)을 살펴보십시오. 당신이 점점

404은 (적발) 예외 아마도 아니지만, 당신이 create.gsp라는 뷰 또는 액션에 render/redirect 전화를하지 않아도 않고 있기 때문이다.

이 질문에 대한 답변이나 최소한 올바른 방향으로 알려 주시기 바랍니다. 행운을 빕니다!

0

Daniel이 말했듯이 도메인 클래스의 제약 조건을 대신 사용하고 컨트롤러에서 예외를 throw하는 대신 validate() 메서드를 사용하십시오.

validate()가 false를 반환하면 오류 메시지와 함께 양식을 다시 렌더링하십시오.

관련 문제