Voilà ma vue JSP:
et voici la méthode onSubmit de mon controleur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <form:form name="nouvelleAnnonce" commandName="nouvelleAnnonceBean" enctype="multipart/form-data"> <table> <tr> <td>Image:</td> <td><input type="file" name="imagePrincipale"></td> <td><form:errors path="imagePrincipale"></td> </tr> <tr> <td><input type="submit"></td> </tr> </table> <form:form />
et ici le code de controlerNouvelleAnnonce pour gérer les erreurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { ModelAndView mav = new ModelAndView(); NouvelleAnnonceBean nouvelleAnnonceBean = (NouvelleAnnonceBean)command; errors = AnnonceUtil.controlerNouvelleAnnonce(nouvelleAnnonceBean, errors, beanControlService, prodUtilService); AnnonceUtil.creerAnnonce(nouvelleAnnonceBean, annonceService); mav.addObject("nouvelleAnnonceBean", nouvelleAnnonceBean); // Ajout des erreurs au ModelAndView mav.addObject( "formErrors", errors ); return mav; }
et enfin le code de la méthode isInvalid:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static BindException controlerNouvelleAnnonce( NouvelleAnnonceBean nouvelleAnnonceBean, BindException errors, BeanControlService beanControlService, ProdUtilService prodUtilService) { try { if (beanControlService.isInvalid(nouvelleAnnonceBean.getImagePrincipale(), prodUtilService)){ log.debug("Le fichier téléchargé n'est pas une image"); errors.addError(new ObjectError("", "Le fichier téléchargé n'est pas une image")); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return errors;
Alors, avec ça normalement, si un utilisateur télécharge dans mon formulaire un fichier qui n'est pas une image, on devrait avoir un message qui signale que ce n'est pas le cas. Le problème c'est qu'il ne me signale rien dans le formulaire quand c'est le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public boolean isInvalid(MultipartFile objetSoumis, ProdUtilService prodUtilService) throws IOException{ boolean invalid = false; //Les extensions valides String extensions = "jpeg,jpg,png,gif"; //Le type mime du fichier soumis String mime = objetSoumis.getContentType(); String[] str = mime.split("/"); String[] tab = extensions.split(","); //On vérifie si str[1] (l'extension du fichier) appartient aux types définies int index=0; while (index<tab.length){ if (str[1].equals(tab[index])){ break; }else{ index ++; } } if ((index>tab.length)){ return true; } //On fait le test sur str[0] invalid = (!(str[0].equals("image"))); return invalid;
Ai-je oublié ou mal fait quelque chose?
Merci d'avance!
Partager