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

Java Discussion :

HashMap key n'est pas trouvé


Sujet :

Java

  1. #1
    Membre éclairé
    HashMap key n'est pas trouvé
    Bonjour à tous,

    Je reviens vers vous pour vous demander de l'aide avec un soucis que je rencontre dans mon Script.
    Dans mon code, j'ai un objet BdcField qui possède un attribut attribute de type HashMap<String, String>.

    Je remplis cet attribut en lisant un fichier XML, et dans mon code, lors que je demande de vérifier si mon objet BdcField possède un attribut particulier, je n'arrive pas à le trouver (en effet, des 6 attributs, je ne vois que 3 si je fais des tests : ref:help, controles et ref:label).

    Le code que j'utilise est le suivant :
    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String value = this.getAttributes().get(Constants.BDC_CONTROL_COLORIS_FIELD_CODE);
    if (value != null) {
        ...
    }


    J'ai aussi essayé avec la fonction containsKey :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    if (this.getAttributes().containsKey(Constants.BDC_CONTROL_COLORIS_FIELD_CODE))


    Mais j'ai toujours le même résultat. Dans la capture d'écran jointe vous pouvez voir que l'attribut est bien présente dans mon HashMap.

    De pus, ce même code fonctionne très bien pour d'autres BdcFields, j'ai ce souci qu'avec celui.

    Pourriez-vous m'aider à éclaircir ce qui ne va pas ?

    Je vous remercie par avance de votre aide,

    Cordialement,
    Marc

  2. #2
    Membre éclairé
    Pour information complémentaire, j'ai aussi joué le code suivant :
    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
    if (this.getNom().equals("gcfttx:code_postal")){
                System.out.println(" ********** teste CP ************");
                for(Map.Entry attr : this.getAttributes().entrySet()){
                    System.out.println(" - " + attr.getKey() + " = " + attr.getValue());
                }
                System.out.println(" ********************************");
            }
     
            boolean controle = false;
            for(Map.Entry attr : this.getAttributes().entrySet()){
                if(attr.getKey().equals(Constants.BDC_CONTROL_COLORIS_FIELD_CODE)){
                    controle=true;
                    break;
                }
            }


    J'ai bien comme sortie
    ********** teste CP ************
    - ref:help = Vous pouvez taper les 2 chiffres du département suivi de *
    - controles = $OZ
    - idCtrl = 1
    - idCOLORIS = codePostal
    - ref:label = Code postal
    - controlColoris = ControlColNROVerifCPRIP
    ********************************
    Ce qui montre qui l'attribut est bien présent, mais au même temps ma nouvelle variable "controle" ne devient jamais "true"...

    EDIT :
    J'ai aussi testé:
    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    boolean controle = false;
            for(Map.Entry attr : this.getAttributes().entrySet()){
                String keyName = attr.getKey().toString();
                if(keyName.equals(Constants.BDC_CONTROL_COLORIS_FIELD_CODE)){
                    controle=true;
                    break;
                }
            }


    Mais le .equals ne marche pas, même s'il semble correct...

  3. #3
    Modérateur

    Hello,

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    controlColoris
    controlCOLORIS


    T'es sûr que c'est vraiment exactement les mêmes ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Merci beaucoup de votre retour,

    Je suis vraiment désolé, il doit être le vendredi...

###raw>template_hook.ano_emploi###