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

Servlets/JSP Java Discussion :

[JSP/JSTL]The class java.lang.String does not have the property


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut [JSP/JSTL]The class java.lang.String does not have the property
    Bonjour à tous !

    Je coince depuis hier sur l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.el.PropertyNotFoundException: The class 'java.lang.String' does not have the property '0'.
    Ci-dessous le bout de code source de l'erreur. J'ai le nez dedans depuis des heures, j'ai lu, relu, re-relu, fouillé le web... Pas mal de personnes ont eu la même erreur mais je n'ai pas pu faire de parallèle entre leur souci et le mien.

    Un très grand merci d'avance pour votre aide.
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <c:forEach items="${model.menus}" var="objA"> 
                    <%  
                        int nbRubrique = 0; //compteurs pour appliquer le style css adapté
                        int nbRubrique2 = 0;
                    %>
                    <c:set var="menuLibelle" value="${objA[0]}" scope="request" />
                    <%
                        String menuLibelle = ((String)request.getAttribute("menuLibelle")).toString();
                    %>
                    <li class="NavBarreMenu" id="NavBarreMenu2">
                        <a class="BarreMenu" title="<% out.println(menuLibelle);%>" href="#">
                            <span><% out.println(menuLibelle);%></span>
                        </a>
                        <ul class="NavBLevel2">
                            <%-- NIVEAU 2 : RUBRIQUE  --%>
                            <c:forEach items="${model.rubriques}" var="objB"> 
                                <c:set var="menuLibelleRub" value="${objB[0]}" scope="request" />
                                <c:set var="rubriqueLibelle" value="${objB[1]}" scope="request" />
                                <c:set var="rubriqueLien" value="${objB[2]}" scope="request" />
                                <%
                                    String menuLibelleRub = ((String)request.getAttribute("menuLibelleRub")).toString();
                                    String rubriqueLibelle = ((String)request.getAttribute("rubriqueLibelle")).toString();
                                    String rubriqueLien = ((String)request.getAttribute("rubriqueLien")).toString();
                                    
                                    if(menuLibelleRub.equals(menuLibelle)){
                                %>
                                    <li class="<% if (nbRubrique == 0) { out.println("First"); }
                                                    if (rubriqueLien.length() == 0) { out.println("First"); }%>" >
                                        <%
                                            if (rubriqueLien.length() == 0) {
                                                out.println("<a><span>" + rubriqueLibelle + "</span></a>");
                                                } else {
                                        %>
                                        <a href="<% out.println(rubriqueLien);%>" target="_blank">
                                            <span><% out.println(rubriqueLibelle);%></span>
                                        </a>
                                        <%  
                                            }
                                            nbRubrique += 1; 
                                        %>
                                        <%-- NIVEAU 3 : RUBRIQUE2 (=sous-sous-menus) --%>
                                        <ul class="NavBLevel3">
                                            <c:forEach items="${model.rubriquesNiv2}" var="objC"> 
                                                <c:set var="rubriqueLibelle2" value="${objC[0]}" scope="request" />
                                                <c:set var="rubrique2Libelle" value="${objC[1]}" scope="request" />
                                                <c:set var="rubrique2Lien" value="${objC[2]}" scope="request" />
                                                <%
                                                    String rubriqueLibelle2 = ((String)request.getAttribute("rubriqueLibelle2")).toString();
                                                    String rubrique2Libelle = ((String)request.getAttribute("rubrique2Libelle")).toString();
                                                    String rubrique2Lien = ((String)request.getAttribute("rubrique2Lien")).toString();
     
                                                    if(rubriqueLibelle2.equals(rubriqueLibelle)){
                                                %>
                                                <li class="<% if (nbRubrique2 == 0) { out.println("First"); }
                                                                if (rubriqueLien.length() == 0) { out.println("First"); }%>" >
                                                    <%
                                                        if (rubriqueLien.length() == 0) {
                                                            out.println("<a><span>" + rubriqueLibelle + "</span></a>");
                                                            } else {
                                                    %>
                                                    <a href="<% out.println(rubrique2Lien);%>" target="_blank">
                                                        <span><% out.println(rubrique2Libelle);%></span>
                                                    </a>
                                                    <%  
                                                        }
                                                        nbRubrique2 += 1;   
                                                    %> 
                                                </li>
                                                <%  }  %>
                                            </c:forEach>
                                            <%  
                                                nbRubrique2 = 0;  
                                            %>
                                        </ul>
                                    </li>
                                    <%  }  %>
                            </c:forEach>
                            <%  
                                nbRubrique = 0; 
                            %>
                        </ul>
                    </li>
                </c:forEach>
    PS : pour la petite histoire, il s'agit de la génération dynamique d'une barre de menu à trois niveaux (les libellés et liens sont stockés dans une base de données).
    Niveau 1 : menu; niveau 2 : rubrique, niveau 3 : rubrique2.

    Mille mercis !
    .
    I'M BACK B*TCHEEEEEZZZZ

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <c:forEach items="${model.rubriques}" var="objB"> 
                                <c:set var="menuLibelleRub" value="${objB[0]}" scope="request" />
    J'imagine que le problème vient de ton objB, à priori de type String quand tu essaies de faire ${objB[0]}.
    Ce n'est pas un tableau donc tu ne peux pas y accéder via un index.
    Ca ne fonctionne pas ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:set var="menuLibelleRub" value="${objB}"
    EDIT: j'ai peut-être lu un peu vite, mais tu vois le principe ?

  3. #3
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    Salut fr1man, merci beaucoup d'avoir répondu.
    Non la syntaxe de c:set est bonne, ça ne doit donc pas venir de là.

    Ca me rend folle, c'est terriblement frustrant !
    .
    I'M BACK B*TCHEEEEEZZZZ

  4. #4
    Membre averti
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Points : 332
    Points
    332
    Par défaut
    Finalement c'est moi qui ai lu trop vite fr1man !!!
    C'est tout à fait ça ! Merci !

    Je suis nouvelle sur toutes ces technos (JSP, JSTL...) mais je pense que c'est dû au fait que dans ma requête pour avoir la liste des menus, je n'ai qu'un seul champ, contrairement à la requête pour les rubriques par exemple, où j'ai trois champs et où, donc, je dois spécifier quel champ je souhaite récupérer (obj[0], obj[1]...).

    Tu penses que c'est bien ça ?
    Ce n'est pas tout de corriger, il faut comprendre son erreur pour ne pas le reproduire !

    Edit : petite précision, l'erreur était sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="menuLibelle" value="${objA[0]}" scope="request" />
    Il fallait mettre "${objA}".
    .
    I'M BACK B*TCHEEEEEZZZZ

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/05/2008, 15h26
  2. Réponses: 1
    Dernier message: 21/06/2007, 01h22
  3. Réponses: 1
    Dernier message: 01/05/2007, 13h48
  4. java.lang.String#toUpper et le char µ
    Par metalpetsFR dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 14/12/2006, 10h10
  5. Réponses: 3
    Dernier message: 19/05/2006, 20h38

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