【发布时间】: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