【问题标题】:Ajax request with empty form field to Spring controller带有空表单字段的 Ajax 请求到 Spring 控制器
【发布时间】:2017-03-31 18:04:58
【问题描述】:

这是我托盘的 Web 项目,用于将数据从表单发送到服务器(Spring 部分)。我使用 Ajax 向服务器发送多部分请求。如果用户留下空的表单字段,就会出现问题。如果所有表单输入完成请求工作正常。我找到了一些帖子,但这不是我的情况,也不适用于多部分请求。在项目中,我不使用 @Valid @NotNull 之类的注释来检查服务器端的有效性。 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;


}

【问题讨论】:

    标签: ajax spring forms spring-mvc


    【解决方案1】:

    除非您另外指定,否则默认情况下 Spring 需要参数。设置@RequestPart(required = false, value="aFieldName")

    【讨论】:

    • 如果你想接受答案你需要自己接受:)
    • 我是托盘,但低级别的声誉阻止了它。感谢您的回答。
    猜你喜欢
    • 2012-05-30
    • 2017-05-03
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多