【问题标题】:Spring HTTP Status 400 - The request sent by the client was syntactically incorrectSpring HTTP 状态 400 - 客户端发送的请求在语法上不正确
【发布时间】:2013-05-06 12:48:28
【问题描述】:

我有一个表单,用户可以使用该表单将文件上传到本地驱动器,并将一些数据保存到数据库中。但是出现了这个错误消息,我想知道如何处理它。

   HTTP Status 400 - The request sent by the client was syntactically incorrect.

控制器

@RequestMapping(value = "/main/user/setter/addpage", method = 

RequestMethod.POST, params = "save")
public String saveProcess(@ModelAttribute("module") Module module, 

@RequestParam("userId") Integer userId, 
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file, 
BindingResult result, HttpSession session) {
    if (result.hasErrors()) {
        return "redirect:/main/user/setter/settingpage";
    }
    else
    if(module != null){

         try {

             MultipartFile filea = module.getFileData();

             InputStream inputStream = null;
             OutputStream outputStream = null;
             if (filea.getSize() > 0) {
             inputStream = filea.getInputStream();
             outputStream = new FileOutputStream("C:\\Test\\"
             + filea.getOriginalFilename());
             System.out.println("Uploaded File Name");
             System.out.println(filea.getOriginalFilename());
                             int readBytes = 0;
             byte[] buffer = new byte[8192];
             while ((readBytes = inputStream.read(buffer, 0, 8192)) != 

                             -1) {
             outputStream.write(buffer, 0, readBytes);
             }
             outputStream.close();
             inputStream.close();
             session.setAttribute("success", "File Uploaded");
             session.setAttribute("uploadFile", "C:\\Test\\"
             + filea.getOriginalFilename());
             }
             } catch (Exception e) {
             e.printStackTrace();
             }

}
// Delegate to service
moduleService.add(userId, module);

return "redirect:/main/user/setter/settingpage";
    }

表单本身

 <c:url var="processUrl" value="/main/user/setter/addpage?userId=2" />
 <form:form modelAttribute="module" method="POST" action="${processUrl}" name="module" 

 enctype="multipart/form-data">

 <form:label path="fileName">Document Title:</form:label>
 <form:input path="fileName" name="name"/><br/>

 <form:label path="documentPath">Coursework Sample:</form:label>
 <form:input path="documentPath" type="file" name="file" id="file" size="43.9"/><br/>

 <form:label path="liveDate">Live Date:</form:label>
 <form:input path="liveDate"/><br/>

  <input type="submit" name="save" value="Save" id="save"/>
  <input type="submit" name="send" value="Send" id="send"/>

 </form:form>

我正在尝试先保存表单,我将使用单独的方法发送它。

【问题讨论】:

  • 能否用DEBUG方法执行同样的请求,或者设置一个requestb.in并将实际请求添加到问题中。
  • 我设置了一个 requestb.in 并对其进行了测试。它返回了正确的页面。方法的逻辑是抛出错误。
  • 将方法参数列表中的BindingResult 对象移动到与其相关的对象旁边,可能是Module
  • @SotiriosDelimanolis 谢谢你解决了不正确的语法问题。
  • @user2259555 是否还有其他错误弹出?

标签: spring


【解决方案1】:

你的方法是这样声明的:

public String saveProcess(@ModelAttribute("module") Module module, 
@RequestParam("userId") Integer userId, 
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file, 
BindingResult result, HttpSession session) ...

假设您尝试将BindingResult 应用于Module 实例,您需要更改方法定义,使BindingResult 紧跟在Module 实例之后。

public String saveProcess(@ModelAttribute("module") Module module,  
BindingResult result,
@RequestParam("userId") Integer userId, 
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file, 
HttpSession session) ...

查看参考资料了解更多详情

Errors 或 BindingResult 参数必须遵循模型对象 立即绑定,因为方法签名可能有 不止一个模型对象,Spring 将创建一个单独的模型对象 他们每个人的 BindingResult 实例 [...]

here

【讨论】:

    【解决方案2】:

    错误HTTP Status 400 - The request sent by the client was syntactically incorrect. 可能来自上下文中缺少的multipartResolver (servlet-context.xml)

    `<beans:bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />`
    

    更多信息,请查看SpringMVC-FileUpload - The request sent by the client was syntactically incorrect的回复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      相关资源
      最近更新 更多