Spring 3表单绑定对象始终为null

时间:2011-02-24 21:53:49

标签: java jsp forms spring-mvc spring-3

我正在尝试使用Spring 3绑定嵌套对象,我遇到了问题。

JSP:

<portlet:actionURL var="formAction" />
<form:form id="add-objects-form" method="post" action="${formAction}">
   <input name = "obj.a"...>
   <input name = "obj.b"...>
   <input type = "file" multiple="multiple" name="file"/>
</form>

表单对象:

class FormObject{
private final static Logger logger = ...

private MultipartFile file
private Obj obj

...getters and setters
}

控制器:

@RequestMapping(method = RequestMethod.POST)
public void uploadDocument(@ModelAttribute FormObject formObject, BindingResult results ) {

}

formObject获取obj.aobj.b,但file始终为空。

1 个答案:

答案 0 :(得分:2)

modelAttribute="formObject"

中添加<form:form>

还要确保没有从类中排除调试信息。如果您有,或者您不确定,请指定@ModelAttribute("formObject")

要处理文件(多部分数据),您需要指定表单的enctype:

enctype="multipart/form-data"

更新:因为您正在使用js-library进行文件上载,所以这是做什么的:

  • 仅上传带有ajax请求的图片(不提交任何其他内容)。将上传的文件存储在临时位置
  • 响应可能包含临时文件的名称。将这些名称存储在隐藏字段中
  • 然后提交表单(通过ajax或通过常规提交),并传递隐藏字段的值,现在只包含字符串
  • 将文件从临时位置移动到永久位置
  • 已上传但未提交表单的文件可以按小时/每日工作清理。