我在使用spring webflow 1.0和struts 1.3上传文件时遇到问题。
jsp是这样的:
<html:form action="/flowAction" method="post" enctype="multipart/form-data">
<!-- snip -->
<html:file property="file" name="attachDocumentsForm" size="50"/>
<!-- snip -->
</html:form>
表格是这样的:
public class AttachDocumentsForm extends SpringBindingActionForm {
// note, SpringBindingActionForm extends struts' ActionForm
private FormFile file;
//snip
}
现在,我的问题是,当我提交表单时,file
字段始终为null
。表单上的其他字段填写正确,如果我挖掘RequestContext
,我会发现文件深埋在那里的一些数据结构中。
以下是我可以从附件中获得的可怕的丑陋方式:
// 'context' is the RequestContext
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext();
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm");
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file");
我注意到我的表单上的MultipartRequestHandler
是null
,我怀疑这可能是问题的一部分,但我尝试使用{{1}的实例填充它无济于事。
我需要做些什么才能正确填充CommonsMultipartRequestHandler
字段?
答案 0 :(得分:1)
我认为你应该配置spring dispatcher servlet:http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html#mvc-multipart-resolver
答案 1 :(得分:0)
在FormFile
(ActionForm
引用的那个)中添加名为attachDocumentsForm
类型的文件的字段,以及访问者方法。
可以通过拨打form.getFile()
来访问上传的文件。
我希望这有帮助!