2009-10-01 80 views
5

我遇到了使用spring webflow 1.0和struts 1.3上传文件的问题。Struts - 上传文件

的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"); 

我已经注意到,我的窗体上的MultipartRequestHandlernull,我怀疑这可能是部分问题,但我已经尝试用CommonsMultipartRequestHandler实例填充它无济于事。

我需要做些什么才能让file字段正确填充?

+0

你不应该能够得到从ActionForm中访问该文件,使用(FormFile)form.getFile()? – 2009-10-01 02:37:42

回答

0

在您的ActionFormattachDocumentsForm提及的一个)中添加一个名为FormFile的文件的字段以及访问器方法。

上传的文件可以通过调用form.getFile()进行访问。

我希望这有助于!

+0

谢谢,但那只是问题所在。我已经有了ActionForm中的其中一个字段,但它始终为空。 – 2009-11-06 20:28:01

+0

我不知道自2006年以来是否有人经历过这个问题,但是我正在处理的遗留项目中存在完全相同的问题......如果有人有解决方案,那就太好了:-) – Philippe 2010-03-23 20:02:56

+0

同样的问题这里。 – 2015-03-20 19:18:52