带有空表单字段的Ajax请求到Spring控制器

时间:2016-11-17 09:13:13

标签: ajax spring forms spring-mvc

这是web项目我托盘将数据从表单发送到服务器(Spring部分)。我用Ajax向服务器发送multipart请求。如果用户离开空表单字段,则会出现问题如果所有表格输入完成请求工作正常。我发现了一些帖子,但这不是我的情况,不适用于多部分请求。在项目中,我不使用像@Valid @NotNull这样的anotetion来检查服务器端的有效性。 Spring没有显示错误,只有Firebug显示网络错误400错误请求。代码出了什么问题。检查多部分请求的空表单字段的有效性的最佳方法是什么。

Ajax代码

function casePostUpload()
    {
var myForm = form.find('formAddPoster');
    myData = new FormData();
    myData.append('multipart',  myForm);


enter code her$
          .ajax({

              url : "/video/addCasePost",
              //url: urlFromActionFild,
              data : myForm,
             // data : myData,
              type : 'POST',
              headers: {'Content-Type': undefined},
              enctype: 'multipart/form-data',
              processData: false, 
              contentType:false,
              success : function(data, textStatus, jqXHR){


                  $('#casePost').prepend('<br/>Poster: '+data.casePoster+' ::  title '+data.caseTitle+' at '+data.timestampAsStr+'<br/></td></tr>');


            },
              error : function(result){
                  //...;

                alert('add contnt error: ' + errorThrown);
              }
          });
    }

Spring MVC控制器

@RequestMapping(value = "/video/addCasePost",   method = RequestMethod.POST )
 public @ResponseBody CasePost addcasepost( @RequestPart("caseTitle") String caseTitleString, 
    @RequestPart("file") MultipartFile file, HttpServletRequest request, Model model, @ModelAttribute("currentuser") User currentuser) throws Exception {
   CasePost jsResponse = new CasePost();



            }catch (Exception e) {
                log.error(e);
            }

    }   

    try {
        if (caseTitleString != null) {
            jsResponse.setCaseTitle(caseTitleString); 
            jsResponse.setCasePoster(filePath);
jsResponse = graphStoryInterface.getCasePostInterface().add(jsResponse, currentuser);

        }
    }
    catch (Exception e) {
        log.error(e);
    }

 return jsResponse;


}

1 个答案:

答案 0 :(得分:0)

默认情况下,除非另有说明,否则Spring需要params。设置@RequestPart(required = false,value =“aFieldName”)