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.aand obj.b,但file始终为空。

4

1 回答 1

2

加入modelAttribute="formObject"_<form:form>

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

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

enctype="multipart/form-data"

更新:由于您使用 js-library 进行文件上传,因此需要执行以下操作:

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