2009-10-01 6 views
5

Je rencontre un problème lors du chargement d'un fichier à l'aide de spring webflow 1.0 et de struts 1.3.Struts - Chargement de fichiers

Le jsp est quelque chose comme ceci:

<html:form action="/flowAction" method="post" enctype="multipart/form-data"> 
    <!-- snip --> 
    <html:file property="file" name="attachDocumentsForm" size="50"/> 
    <!-- snip --> 
</html:form> 

Le formulaire est quelque chose comme ceci:

public class AttachDocumentsForm extends SpringBindingActionForm { 
    // note, SpringBindingActionForm extends struts' ActionForm 
    private FormFile file; 
    //snip 
} 

Maintenant, mon problème est que lorsque je soumets la forme, le champ file est toujours null . Les autres champs sur le formulaire sont remplis correctement, et si je creuse à travers le RequestContext, je peux trouver le fichier est enterré profondément certaines des structures de données là.

Voici le horriblement laid façon que je peux obtenir à l'attachement:

// 'context' is the RequestContext 
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext(); 
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm"); 
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file"); 

J'ai remarqué que le MultipartRequestHandler sur ma forme est null, et je pense que cela pourrait faire partie de la problème, mais j'ai essayé de le remplir avec une instance de CommonsMultipartRequestHandler en vain.

Que dois-je faire pour que le champ file soit rempli correctement?

+0

ne devriez-vous être en mesure d'obtenir le fichier du accesseur ActionForm, en utilisant (FormFile) form.getFile()? –

Répondre

0

Ajoutez un champ appelé fichier de type FormFile dans votre ActionForm (celui référencé par attachDocumentsForm), avec les méthodes d'accès.

Le fichier téléchargé peut être consulté en appelant form.getFile().

J'espère que cela aide!

+0

Merci, mais c'est juste le problème. J'ai déjà un de ces champs sur l'ActionForm, mais il est toujours nul. –

+0

Je ne sais pas si quelqu'un est passé par là depuis 2006, mais j'ai exactement le même problème dans un projet sur lequel je travaille ... si quelqu'un a la solution, ce serait génial :-) – Philippe

+0

Même problème ici. –

1

Je pense que vous devez configurer servlet répartiteur de printemps: http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html#mvc-multipart-resolver

+0

Merci pour la mise à jour, je vais regarder dans cela. Je sais que j'ai consulté les documents que vous avez liés, et défini un résolveur multipart dans le cadre de ce processus. Je ne suis pas du tout certain de l'avoir correctement câblé (ça fait quelques mois que je l'ai regardé). Je vais prendre une autre passe quand j'aurai une chance. –