Tengo un problema al cargar un archivo usando spring webflow 1.0 y struts 1.3.Struts - Cargando archivos
El JSP es algo como esto:
<html:form action="/flowAction" method="post" enctype="multipart/form-data">
<!-- snip -->
<html:file property="file" name="attachDocumentsForm" size="50"/>
<!-- snip -->
</html:form>
la forma es algo como esto:
public class AttachDocumentsForm extends SpringBindingActionForm {
// note, SpringBindingActionForm extends struts' ActionForm
private FormFile file;
//snip
}
Ahora, mi problema es que cuando envíe el formulario, el campo file
es siempre null
. Los otros campos en el formulario se completan correctamente, y si busco en el RequestContext
, puedo encontrar que el archivo está profundamente enterrado en algunas de las estructuras de datos.
Aquí es el horriblemente fea manera que puedo conseguir en el archivo adjunto:
// 'context' is the RequestContext
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext();
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm");
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file");
me he dado cuenta de que el MultipartRequestHandler
en mi formulario es null
, y sospecho que esto podría ser parte de la problema, pero he intentado poblarlo con una instancia de CommonsMultipartRequestHandler
en vano.
¿Qué debo hacer para permitir que el campo file
se rellene correctamente?
¿No deberías ser capaz de obtener el archivo desde el descriptor de acceso ActionForm, usando (FormFile) form.getFile()? –