2011-11-24 2 views
1

try 블록에서 큰 파일 크기에 대한 유효성 검사를 마쳤습니다. 오류를 다시 던지고 정적 제약 조건의 다른 속성에 대한 null 값을 확인하고 그 오류를 던집니다.이중 오류 제거 방법 groovy

첫 번째 오류를 반환 한 후 흐름을 중지하는 방법은 무엇입니까? 여기

이 큰 파일 크기 오류 후 코드

static constraints = { 
     applicationName(blank: false, size: 1..25) 
     applicationShortName(blank: false, size: 1..10) 
     applicationImage(nullable: false, maxSize: MAX_SIZE) 
     contentProviderId (
      validator: { 
       if (it == 0) { 
        return ['notSelected'] 
       } 
      } 
     ) 
     customErrorMessage (
       validator: { 
        if ("fileToBig".equals(it)) { 
         return ['fileToBig'] 
        } 
       } 
     ) 
    } 

try { 
      CommonsMultipartFile file = request.getFile('applicationImageUrl'); 

      logger.debug("POSTPROCESS: is file empty=${file.isEmpty()}") 
      if(!file.isEmpty()) { 

       try { 


         -- other logic 


       } 
       catch (Exception ex) { 
        logger.warn("Failed to upload file - improper file type", ex) 
        return []; 
       } 

       logger.debug("Getting new image file") 
       try { 
        -- logic 

        if (file.size <= MAX_SIZE) { 
         -- logic 
        } else { 
         customErrorMessage = "fileToBig"; (ERROR FOR BIG FILE SIZE) 


        } 
       } catch (Exception e) { 
        logger.warn("Failed to upload file", e) 
        customErrorMessage = "fileToBig"; 

       } 
      } else { 
       logger.debug("File was empty. Will check if there is a file in submission") 
       if (submission.applicationImage != null && submission.applicationImage != []) { 
        logger.debug("submission contains applicationImage=${submission.applicationImage}") 
        this.applicationImage = submission.applicationImage; 
       } 
      } 
     } catch (Exception e) { 
      this.errors.reject("error","An error occured when uploading file. Please try again."); 
      logger.error("Failed to upload file", e); 
      return []; 
     } 

     --logic 
     if (application != null) { //Application already exists! 
      submission.applicationId = application.id; 
      return [next: 10]; 
     } 

     return []; 
    } 

이며, 응용 프로그램 이미지가 설정되어 있지 않은, 그 던지는 응용 프로그램 이미지 널 오류뿐만 아니라 ...

+0

나는 이것을 수행 할 방법을 모른다. 이 제약 조건을 위반하면 유효성 검사를 중단하려는 이유를 설명 할 수 있습니까? 아마도 나는 당신의 목표를 달성하기위한 또 다른 방법을 제안 할 수 있습니다. –

+0

수정 된 질문을 확인하십시오 ... 제발 그것을 – Techie

답변

0

당신은 사용자 정의를 추가 할 수 있도록 customIrrorMessage 필드가 null이 아닌 경우에만 null 값을 확인하는 applicationImage 필드에 대한 유효성 검사기입니다. 이렇게하면 customErrorMessage가 null이 아닌 경우에만 유효성 검사 예외에서 applicationImage 오류가 발생합니다. 검증 폐쇄에

당신은 필드의 값에 대한 액세스 확인되고 있고뿐만 아니라 전체 개체에 :

static constraints = { 
     applicationName(blank: false, size: 1..25) 
     applicationShortName(blank: false, size: 1..10) 
     applicationImage(validator: {val, obj -> 
      if (obj.customErrorMessage != null) { 
       if (val == null) return ['imageNull'] 
       if (val.size() > MAX_SIZE) return ['tooLarge'] 
      } 
     }) 
     contentProviderId (
      validator: { 
       if (it == 0) { 
        return ['notSelected'] 
       } 
      } 
     ) 
     customErrorMessage (
       validator: { 
        if ("fileToBig".equals(it)) { 
         return ['fileToBig'] 
        } 
       } 
     ) 
    } 

것은해야 할 수 있습니다

myField(validator: { val, obj -> return propertyName == "myField" }) 

따라서 당신은 이런 식으로 뭔가를 할 수 오류 메시지가 비틀기는하지만 내 포인트를 얻길 바랍니다.)

+0

팁 주셔서 감사하지만 customErrorMessage가 null 인 경우, 나는 우리가 applicationImage 오류를 던질 수 있다고 믿습니다 ... 내가 맞습니까? – Techie

+0

applicationImage 사용자 정의 검사기에서 customErrorMesssage에 액세스하려면 어떻게해야합니까? ({(customErrorMessage == NULL) { 복귀 [ '널'] } 경우 } : MAX_SIZE, 검증이 maxSize)하고 그러한 특성 – Techie

+0

나는 말한다 나는이 .... applicationImage 같은 것을 준 내 대답을 편집했습니다. 내 대답은 – Krystian

0
applicationImage(maxSize: MAX_SIZE, 
      validator: {val, obj -> 
      if (obj.customErrorMessage == null) { 
       if (val == null) return ['nullable'] 

      } 
     })