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

Struts 1 Java Discussion :

Test de null-ité


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Par défaut Test de null-ité
    Bonjour bonjour,

    C'est re-moi pour la dernière fois promis juré
    Bon, j'ai encore un petit souci au niveau d'un if/else :

    Voila, en fait je récupère un champ vide (input type="text") et malgré mes tests de 'nullité', je passe au travers (début du problème au else en gras) :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    try {
              LivraisonActionForm resultatsDemandesValidationActionForm = (LivraisonActionForm) actionForm;
              LivraisonDelegate livraisonDelegate = new LivraisonDelegate();
              LivraisonDto[] livraisonDto;
    
              // Test de la valeur de la checkbox
              String checkBox = httpServletRequest.getParameter("allDemandes");
    
        if(checkBox != null && checkBox.matches("on"))
                 {
                    livraisonDto = livraisonDelegate.livraisonFindAllWFV();
                    resultatsDemandesValidationActionForm.setlivListCollection(Arrays.asList(livraisonDto));
                 }
    
          else  {
                   String temp = httpServletRequest.getParameter("numero");
                   
                   System.out.println("voici temp:"+temp+".");
                   // Résultat : voici temp:.
                   
                   if(temp != "" && temp != null && temp != " "){
                     // Malgré les trois tests, le debug passe dans le if
                     
                     int num = Integer.parseInt(temp);
                     Integer numero = new Integer(num);
                   if(numero != null ){
                    livraisonDto = livraisonDelegate.livraisonFindByNumeroWFV(numero);
                    resultatsDemandesValidationActionForm.setlivListCollection(Arrays.asList(livraisonDto));
                     }
                   }
                  else{
                                    
                 String sDate = httpServletRequest.getParameter("dateChoisie");
                 if(sDate != ""){
                 SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
                 Date date = formatter.parse(sDate);
                 resultatsDemandesValidationActionForm.setlivListCollection
                (Arrays.asList(livraisonDelegate.livraisonFindByDateLivWFV(date)));
                     }
                   }
               }
         }

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu veux dire que tu passes toujours dans else ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Par défaut
    Nan, ça, ça fonctionne (cf. le topic If/Else).

    J'ai pas mis en évidence le if concerné (désolé ).
    C'est ce passage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    System.out.println("voici temp:"+temp+".");
                   // Résultat : voici temp:.
                   
                   if(temp != "" && temp != null && temp != " "){
                     // Malgré les trois tests, le debug passe dans le if
                     
                     int num = Integer.parseInt(temp);
                     Integer numero = new Integer(num);
    Le problème étant que lorsqu'il retourne un temp null, il ne doit pas essayer de le faire le parseInt (normal sinon plantage). Le if est donc là pour vérifier que le temp n'est pas null, et malgré les trois conditions, le contrôleur ne voit pas quand temp est null ....

    C'est plus clair ?

    Edit : En fait, ça serait plus logique de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(temp != "" || temp != null || temp != " ")
    Mais ça ne fonctionne pas non plus ...

  4. #4
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    c'est un string, donc essayes avec les regex de tester que ce que tu as comme valeur dans ta chaine de caractère est bien un entier

    la regex est simple dans ce cas, ca sera un truc du genre "^\\d*$"

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ca c'est normal qu'il ne voit pas qu'il est NULL, il s'est planté avant
    Il faut faire ce test (et dans cet ordre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    if ( temp != null && temp.trim().length() > 0)
    {
    ...la il y a quelque chose...
    }
    On ne test pas la valeur d'un String avec == mais avec equals(...)
    Dans le permier cas, tu testes si les 2 chaînes sont les mêmes (même adresse), pas leur contenu
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Par défaut
    Yeeeaaaaah !

    Merki beaucoup !!! Sa fonctionne !
    En effet, je testait pas comme il fallait, mais maintenant ça tourne !

    Voici le code final, et encore merci ! (ouf, à 1/4 d'h de la démo ! chui sauvé ... ou presque !)

    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
     else  {
                   String temp = httpServletRequest.getParameter("numero");
     
                   System.out.println("voici temp:"+temp+".");
                   // Résultat : voici temp:.
     
                   if(temp != null && temp.trim().length() > 0){
                     // Malgré les trois tests, le debug passe dans le if
     
                     int num = Integer.parseInt(temp);
                     Integer numero = new Integer(num);
                     livraisonDto = livraisonDelegate.livraisonFindByNumeroWFV(numero);
                     resultatsDemandesValidationActionForm.setlivListCollection(Arrays.asList(livraisonDto));
                     }
                    else{
                   String sDate = httpServletRequest.getParameter("dateChoisie");         
                   if(sDate != null && sDate.trim().length() > 0){
                   SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
                   Date date = formatter.parse(sDate);
                   resultatsDemandesValidationActionForm.setlivListCollection
                       (Arrays.asList(livraisonDelegate.livraisonFindByDateLivWFV(
                       date)));
                 }
                     }
                   }

  7. #7
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonne chance alors, c'est pour ta soutenance de fin de stage d'IUT?

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 90
    Par défaut
    Oui, mais c'est passé !

    Ils m'ont gardé en CDD pendant un mois mais aujourd'hui c'est mon dernier jour, donc le boss voulait voir l'appli.

    Apparement, il est content , donc je vais moins vous embêter à partir d'aujourd'hui.

    En tout cas merci pour toutes les réponses fournis depuis 3mois. R1pToR vous salue !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test sur null ou equals sur une constante ?
    Par bulbo dans le forum Langage
    Réponses: 70
    Dernier message: 30/01/2014, 12h15
  2. curieux test avec Null
    Par AlexFred dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/12/2011, 18h52
  3. test valeur null
    Par looping dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2009, 10h51
  4. [g++] auto_ptr test si NULL
    Par gorgonite dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 07/01/2007, 18h58
  5. test valeur null
    Par zwck dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/09/2004, 13h52

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