2013-04-10 4 views
0

대상 컨트롤러를 공격하지 속성 :봄 검증은 내가 파일을 업로드 제출 양식을이 방법

@RequestMapping(value = "/uploadFile",method= RequestMethod.POST) 
    public ModelAndView uploadFile(@ModelAttribute(value = "assayAssessmentsRequestBean")AssayAssessmentsRequestBean assayAssessmentsRequestBean,HttpSession session,BindingResult result) throws PanDaApplicationException { 
//mycode 
} 

일이 무엇 :

<form id="uploadForm" action="#" method="POST" enctype="multipart/form-data"> 
    <div class="instruction popup_inst"> 
     <span class="popup_logo">[@spring.message "pandaLogo"/]</span> 

     <div class="float_right"> 
      <input type="button" id="cancelBtn" class="btn" onclick="closePopupFunctionality();" value="[@spring.message "cancelButton"/]" /> 

      <input class="btn" type="submit" id="submit" onclick="validateFileInput();" value="[@spring.message "uploadButton"/]" /> 
     </div> 

    </div> 
    <span class="popup_title">[@spring.message "uploadFile"/]</span> 
    <div class="popup_container"> 
     [@spring.bind "assayAssessmentsRequestBean"/] 
     [@spring.formInput path="assayAssessmentsRequestBean.designabilityFile.file" fieldType="file" attributes="title='path' class='upload' accept='.txt,.csv,.zip'" /] 
     [@spring.formHiddenInput path="assayAssessmentsRequestBean.dateOfAssessment" attributes="" /] 
     [@spring.formHiddenInput path="assayAssessmentsRequestBean.id" attributes="" /] 
     [@spring.showErrors " " "error" /] 
    </div> 
    <input id="uploadfile" type="hidden" value="${uploadfile}"/> 
</form> 

이 양식은 컨트롤러에서 다음과 같은 방법 안타 이 메서드는 호출되지 않으며 BindingResult 특성을 제거하면 메서드가 호출됩니다.

나는 BeanPropertyBindingResult 속성을 가지고있는 또 다른 접근법을 시도하고 대상 객체를 검증하여 전달하지만 작동하지만 결코 오류를 반환하지 않습니다.

@RequestMapping(value = "/uploadFile",method= RequestMethod.POST) 
    public ModelAndView uploadFile(@ModelAttribute(value = "assayAssessmentsRequestBean")AssayAssessmentsRequestBean assayAssessmentsRequestBean,HttpSession session/*,BindingResult result*/) throws PanDaApplicationException { 
     logger.info(assayAssessmentsRequestBean.getDesignabilityFile().getFile()); 
     BindingResult result=new BeanPropertyBindingResult(assayAssessmentsRequestBean.getDesignabilityFile(),"designabilityFile"); 

답변

2

당신은 당신이 확인하고 BindingResult이

그래서이 작업을

public ModelAndView uploadFile(@Valid @ModelAttribute(
    value = "assayAssessmentsRequestBean")AssayAssessmentsRequestBean assayAssessmentsRequestBean,BindingResult result, 
HttpSession session) { 

} 

다음해야 할 검증 된 객체 직후에해야한다는 생각을 관련된 객체 전에 @Valid 주석이 있어야합니다 당신은 자신의 Validator를 정의하고 그것을 바인더로 설정해야합니다. Validator가 자동으로 호출됩니다. 그러나이 방법으로 멀티 파트에서 유효성 검사를 수행 할 수 있는지 확실하지 않습니다.

+0

감사합니다 :-) –

+0

내가 실제로 당신에게 말한 것을 시도 할 것입니다. 왜냐하면 그 이유는 실제로 존재했기 때문입니다. "_think BindingResult가 유효성이 검사 된 객체 바로 다음에 와야 함"감사 :-) –

+0

"think BindingResult는 유효성이 검사 된 개체 바로 다음에 있어야하며 "BindingResult **는 유효성 검사를 마친 개체 뒤에 즉시 따라야합니다 **"로 바꿉니다. (그리고이 게시물 그냥 내 정신을 구 했어요!) – chrsalln