le printemps plusieurs parties de téléchargement de fichier de validation de formulaire
Je suis nouveau sur le printemps, et je suis actuellement aux prises avec de nombreuses pièces nécessaires pour obtenir une multipart formulaire de soumission et de validation du scénario avec l'erreur étant affiché dans la vue.
Voici les fichiers que j'ai actuellement :
resourceupload.jsp : une vue qui affiche un formulaire à télécharger le fichier.
<form:form method="post" action="resource/upload" enctype="mutlipart/form-data">
<input name="name" type="text"/>
<input name="file" type="file" />
<input type="submit"/>
<form:errors path="file" cssClass="errors"/>
</form>
resourceuploadcontroller.java : le contrôleur qui gère le formulaire de soumission, et (unsuccessfuly) essaie de poster des erreurs de validation de fichier de la vue :
@RequestMapping(method = RequestMethod.POST)
public String handleFormUpload( @RequestParam("file") MultipartFile file , @RequestParam("name") String name,Object command, Errors validationErrors){
..perform some stuff with the file content, checking things in the database, etc...
.. calling validationErrors.reject("file","the error") everytime something goes wrong...
return "redirect:upload"; //redirect to the form, that should display the error messages
Maintenant, évidemment, il y a quelque chose de mal avec cette approche:
1/j'ai dû ajouter un mannequin "commande" de l'objet avant de le validationErrors paramètre, sinon printemps jetez-moi une erreur. Cela ne semble pas vraiment droit.
2/Après j'ai ajouté ce paramètre, la redirection ne passe pas les erreurs de la vue. J'ai essayé à l'aide de @SessionAttribute("fichier") au début de la manette, sans aucune chance.
Si quelqu'un pouvait aider... j'ai eu un coup d'oeil à @ResponseBody annotation, mais qui ne semble pas être fait pour être utilisé avec des vues..
OriginalL'auteur Ben G | 2012-03-26
Vous devez vous connecter pour publier un commentaire.
Semble que j'ai trouvé la solution sur mon propre.
Tout d'abord, le lien qui m'a beaucoup aidé : http://www.ioncannon.net/programming/975/spring-3-file-upload-example/
et
Le printemps 3 MVC - forme:les erreurs à ne pas montrer les erreurs
qui a montré un bon truc pour afficher toutes les erreurs, à l'aide de
Maintenant, une liste de toutes les choses que j'ai changé pour faire cette chose que le travail :
1/utiliser "rejectValue" au lieu de "rejeter".
2/retour de la vue directement au lieu d'une redirection.
3/créer un "UploadItem" modèle avec un CommonsMultipartFile propriété
Donc, dans l'ensemble, mon contrôleur méthode est devenue
Espère que cela a aidé.
OriginalL'auteur Ben G
Ici est une façon très simple de le faire:
La formBackingObject:
La forme:
Et enfin la ControllerClassMethod:
Facile Comme Bonjour!
La raison pour laquelle le @NotNull annotation ne fonctionne pas pour les fichiers est parce que le fichier en plusieurs parties n'est jamais null dans l'objet de requête. Mais, il peut avoir de 0 octets. Vous pouvez prendre le temps de mettre en œuvre un validateur personnalisé, mais pourquoi?
OriginalL'auteur user3422025
Je ne pense pas que cette approche embrasse pleinement le printemps, mais il fonctionne, c'est simple, et utilise un formulaire html simple, et une méthode dans un contrôleur:
fichier html pour le post (enregistrer en tant que jsp ou html, votre appel)
dans votre contrôleur, ont la méthode suivante:
Pour obtenir de plus gros fichiers téléchargeables (plus de 40k), vous devez spécifier les informations suivantes au printemps servlet de configuration.... J'ai mis quelques gros #'s là pour s'assurer qu'il fonctionne, mais bien sûr, mettre les "vrais" chiffres là si vous en avez besoin.
Remarque que le Printemps de l'upload de fichier utilise des trucs Apache Commons FileUpload sous les couvertures. Vous aurez besoin de les télécharger et de les inclure dans votre application. Ceci, à son tour, exige également Apache Commons IO, de sorte que vous aurez besoin également. (cité par ici)
OriginalL'auteur Brad Parks
Au Printemps 4, vous pouvez mettre le fichier du programme de validation comme ci-dessous:
Et puis à l'injecter au-dessus du programme de validation dans le téléchargement contrôleur comme ci-dessous:
Cette mise en œuvre permet à votre code plus clair et plus lisible. Je l'ai trouvé à partir du tutoriel Spring MVC de Téléchargement de Fichiers Exemple de Validation
OriginalL'auteur David Pham