簡體   English   中英

彈出3自動表單字段驗證與文件上傳

[英]spring 3 auto form field validation with file upload

我正在使用帶有hibernate驗證器的JSR 303驗證,通過在控制器方法上指定@Valid來自動驗證字段。 驗證工作正常。 我知道在表單中添加了一個上傳字段,並添加了一個@RequestParam(“file”)作為MultipartFile文件。 現在它只有在提交時所有字段都有效時才有效,否則我得到404(錯誤請求)。 如果我刪除@Valid注釋,我會得到javax.validation.ConstraintViolationException,其中包含狀態500的所有驗證違規。

我正在使用Spring 3.2

我的表格:

    <form action="#springUrl("/admin/stores/save")" method="POST" enctype="multipart/form-data">
Name: 
  #springBind( "store.name" )
  <input type="text" 
    name="${status.expression}" 
    value="$!status.value" /><br>
......
   <input type="file" name="file" accept="image/*">

  <input type="submit" value="submit"/>
</form>

控制器:

@RequestMapping(value="/save", method = RequestMethod.POST)
    @Transactional
    public String save(@Valid @ModelAttribute Store store, @RequestParam("file") MultipartFile file, BindingResult bindingResult, ModelMap model) {
        if (bindingResult.hasErrors()) {
            model.addAttribute("message", "Failed");
            model.addAttribute("store", store);
            return "admin/stores/form";
        } else {
                .....

你的問題是方法參數順序。 @ModelAttribute必須后跟BindingResult參數。 查看Spring文檔並查看例17.1。 BindingResult和@ModelAttribute的排序無效

如果它是其中的一部分,您還應該將MultipartFile添加到表單( Store )。

Store {

    /* Your other fields */

    @NotNull
    private  MultipartFile file;

    public MultipartFile getFile() {
        return file;
    }

    public void setFile(MultipartFile file) {
        this.file= file;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM