2012-07-12 2 views
2

Struts2 - FileUploadInterceptor를 사용하여 업로드되는 파일의 콘텐츠 유형과 최대 크기를 처리하고 있습니다.Struts2 필드 FileUploadInterceptor에 의해 생성 된 오류 키

오류 메시지를 표시하려면 <s:fielderror/>이 완벽한 오류 메시지를 표시하고 있습니다.

나는 여러 섹션이있는 페이지에 일하고 난 해당 섹션에 속하는 오류 메시지를 표시 할 필요가 <s:fielderror/>에 문제는

처럼, 모든 오류 메시지를 표시하고이 매개 변수가 전달되어야 해결하는 것입니다
<s:fielderror><s:param>firstName</s:param></s:fielderror> 

콘텐츠 형식 오류 및 최대 크기 오류에 대해 FileUploadInterceptor에서 만든 오류 키가 무엇인지 잘 모르겠습니다.이 문제를 해결할 때 도움을주십시오. 내가 제대로 이해하면

답변

1

, 난 당신이 이런 식으로 뭔가를하고 싶은 생각 :

<s:fielderror>[some reference to a content type error]</s:fielderror> 
<s:fielderror>[some reference to a max size error]</s:fielderror> 

다르게 별도 /를 렌더링 할 수 있도록.

이것은 현재 이 아니며인데 <s:fielderror/>은 필드 이름 만 사용하기 때문에.
이 방법으로 한 필드의 여러 오류를 구분할 수 없습니다.

FileUploadInterceptoracceptFile 메서드에 대한 source code을 보면 최대 크기가 먼저 검사되고 해당 검사에 실패하면 오류가 설정됩니다. 최대 크기가 이미 실패한 경우 코드에서 허용 된 유형을 계속 확인하지 않습니다.

353   } else if (maximumSize != null && maximumSize < file.length()) { 
    354    String errMsg = getTextMessage(action, "struts.messages.error.file.too.large", new Object[]{inputName, filename, file.getName(), "" + file.length()}, locale); 
    355    if (validation != null) { 
    356     validation.addFieldError(inputName, errMsg); 
    357    } 
    358 
    359    LOG.warn(errMsg); 
    360   } else if ((!allowedTypesSet.isEmpty()) && (!containsItem(allowedTypesSet, contentType))) { 
    361    String errMsg = getTextMessage(action, "struts.messages.error.content.type.not.allowed", new Object[]{inputName, filename, file.getName(), contentType}, locale); 
    362    if (validation != null) { 
    363     validation.addFieldError(inputName, errMsg); 
    364    } 
    365 
    366    LOG.warn(errMsg); 
    367   } 

따라서 한 번에 하나씩 만 오류를 가져와야합니다.

+0

답장을 보내 주셔서 감사합니다. 내 질문에 혼란 스러울 경우 귀하의 코드에서 특정 오류를 가져 오기위한 키가되어야합니다. '[콘텐츠 유형에 대한 일부 참고 사항] 오류]' –

+0

@PramodCA 내가 말하고자하는 것은 콘텐츠 유형 오류 또는 최대 크기 오류에 대해 ** 키가 ** 없다는 것입니다. 유일한 옵션은 ' myFileFieldName' – nmc

+0

내 fileName은 ' pramod_resume.doc'로 코딩 된 것보다 pramod_resume.doc이므로 오류가 표시되지 않았습니다. –