0
我有我提交上傳文件格式:春天驗證與BindingResult屬性從來沒有擊中目標控制器方法
<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>
這種形式打在控制器下面的方法:
@RequestMapping(value = "/uploadFile",method= RequestMethod.POST)
public ModelAndView uploadFile(@ModelAttribute(value = "assayAssessmentsRequestBean")AssayAssessmentsRequestBean assayAssessmentsRequestBean,HttpSession session,BindingResult result) throws PanDaApplicationException {
//mycode
}
發生什麼事是該方法從不調用,當我刪除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");
我會嘗試你所說的感謝:-) – 2013-04-10 14:16:35
它的工作原因是因爲我從你身上「認爲BindingResult應該在驗證對象之後立即跟隨」謝謝:-) – 2013-04-11 12:29:15
你可以刪除「think BindingResult應該在驗證對象之後立即執行「,並且替換爲」BindingResult **必須在驗證對象之後立即**「。 (這篇文章只是保存了我的理智!) – chrsalln 2016-01-12 22:30:37