IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Les erreurs ne s'affichent pas


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Par défaut Les erreurs ne s'affichent pas
    Voilà ma vue JSP:

    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 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
     
    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 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
    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;
    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
    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;
    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.

    Ai-je oublié ou mal fait quelque chose?

    Merci d'avance!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Par défaut
    Bonjour,


    Essaye ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse arg1) throws Exception {
            ModelAndView mav = new ModelAndView();
    ...
            ServletRequestDataBinder binder = createBinder(request, requestBean);
            binder.bind(request);
            BindException errors = new BindException(binder.getBindingResult());
     
    ...
                errors.addError(new ObjectError(getCommandName(), new String[] { "ton message" }, null, null));
    ...
                mav.addObject("errors", errors);
                mav.setViewName("showErrors");

  3. #3
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Par défaut
    ça ne marche pas
    J'ai l'erreur suivante:
    Neither BindingResult nor plain target object for bean name 'nouvelleAnnonceBean' available as request attribute

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/02/2014, 16h28
  2. sans erreur, apache n'affiche pas la page
    Par dejiein dans le forum Apache
    Réponses: 1
    Dernier message: 01/08/2006, 18h28
  3. Templates :: les variables ne s'affichent pas
    Par gollum33 dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2006, 22h49
  4. [JAR] Les icônes ne s'affichent pas
    Par david06600 dans le forum Général Java
    Réponses: 15
    Dernier message: 19/02/2006, 14h01
  5. Les classes ne s'affichent pas
    Par karl3i dans le forum MFC
    Réponses: 8
    Dernier message: 26/01/2004, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo