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

JSF Java Discussion :

Deux méthodes imbriquées


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Par défaut Deux méthodes imbriquées
    Bonjour,

    J'ai une page bean intitulé SelectTablebean et qui contien une méthode columnsTables (String Table )
    tableStringSource () --> qui retourne une liste de string

    je veux faire comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p:selectOneMenu value="" >
                          <f:selectItems value="#{SelectTableBean.columnsTables(#{SelectTableBean.tablesStringSource.get(i-1)})}" />
                        </p:selectOneMenu>
    mais j'ai une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Encountred "{" at line 1 column 34
    was excpecting one of :
    "."
    ")"
     
    ..............
    je suis bloqué, pouvez vous m'aider SVP

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut,

    il faut que tu écrives ce genre de choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <f:selectItems value="#{SelectTableBean.columnsTables(SelectTableBean.tablesStringSource.get(i-1))}" />
    Mais ce n'est qu'une première approche ...
    d'où sort ton "i" ?
    et surtout où vas-tu mettre la valeur car la value="" ...

    Si tu mets pas tout ton code, pas facile de t'aider.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Par défaut
    j'ai mis ce que tu m'as demandé de faire et voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @40,125 value="#{SelectTableBean.columnsTables(SelectTableBean.tablesStringSource.get(i-1))}": Method columnsTables not found
    page.xhtml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <c:forEach var="i" begin="1" end="5" step="1" varStatus ="status"> 
              <c:set var="TableName" scope="view" value="#{SelectTableBean.tablesStringSource.get(i-1)}" />  
     
                      <div><p:selectOneMenu value="" >
                          <f:selectItems value="#{SelectTableBean.columnsTables(SelectTableBean.tablesStringSource.get(i-1))}"/> 
                        </p:selectOneMenu> </div>
     
                <br></br>
     
     
          </c:forEach>
    le "i" est une valeur dans le forEach, qui s'incrémente, puis j'affiche la liste des nom des champs d'une table dans un combo box.

    Après j'ai eu l'idée de stocker le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #{SelectTableBean.tablesStringSource.get(i-1))}
    dans une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <c:set var="TableNames" scope="view" value="#{SelectTableBean.tablesStringSource.get(i-1))}[//>
    et après j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <f:selectItems value="#{SelectTableBean.columnsTables(TableName)}"/>
    et j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @40,91 value="#{SelectTableBean.columnsTables(TableName)}": Method columnsTables not found

  4. #4
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    tu peux montrer ton ManagedBean "SelectTableBean".

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Par défaut
    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
    @ManagedBean (name="SelectTableBean")
    @SessionScoped
    public class SelectTableBean implements Serializable
    {
        int i = 0;
        String choixS;
        String TableName;
        private List<SelectItem> maValeur = new ArrayList<SelectItem>();
        private List<String> tablesStringSource = new ArrayList<String>();
     
     
       public List<SelectItem> getTables() throws SQLException
        {
            return ConnectionBean.moDatabaseConnection.getMyElements();
     
        }
     
       public List<SelectItem> getColumnsTables( String T) throws SQLException
        {
                    return ConnectionBean.moDatabaseConnection.getMyColumns(T);
     
        }
     
        public String getTableName() {
            return TableName;
        }
     
        public void setTableName(String TableName) {
            this.TableName = TableName;
        }
     
       public String getChoixS() {
            return choixS;
        }
     
        public void setChoixS(String choixS) {
            this.maValeur.add(new SelectItem(choixS));
            this.tablesStringSource.add(choixS);
     
        }
     
        public List<SelectItem> getMaValeur() {
            return maValeur;
        }
     
        public void setMaValeur(List<SelectItem> maValeur) {
            this.maValeur = maValeur;
        }
     
        public List<String> getTablesStringSource() {
            return tablesStringSource;
        }
     
        public void setTablesStringSource(List<String> tablesStringSource) {
            this.tablesStringSource = tablesStringSource;
        }
     
     
     
    }

  6. #6
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    il faut que tu écrives

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <f:selectItems value="#{SelectTableBean.getColumnsTables(TableName)}"/>

    NOTE : tes noms de beans et tes noms de variables, tu ne devrais pas les commencer par des majuscules : c'est "réservé" aux classes et interfaces.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Par défaut
    j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <c:forEach var="i" begin="1" end="5" step="1" varStatus ="status"> 
              <c:set var="TableName" scope="view" value="#{SelectTableBean.tablesStringSource.get(i-1)}" />  
     
                      <div><p:selectOneMenu value="" >
                          <f:selectItems value="#{SelectTableBean.columnsTables(TableName)}"/> 
                        </p:selectOneMenu> </div>
     
                <br></br>
     
     
          </c:forEach>
    j'ai cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Method columnsTables Not Found

  8. #8
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    tu as encore oublié de mettre "get" !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <f:selectItems value="#{SelectTableBean.getColumnsTables(TableName)}"/>

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    il faut que tu écrives

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <f:selectItems value="#{SelectTableBean.getColumnsTables(TableName)}"/>
    Je ne suis pas d'accord. Les getters ne sont jamais appelés explicitement en JSF. Via la page xhtml, on fait référence aux managed beans, et aux noms de leurs variables directement. Si les conventions de nommages sont respectées alors le getter sera appelé implicitement et automatiquement.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Par défaut
    Désolé pour l'oublie, sinon j'ai maintenant cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error Traced[line: 39] Element type "f:selectItems" must be followed by either attribute specifications, ">" or "/>".

  11. #11
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Citation Envoyé par N4rc0 Voir le message
    Je ne suis pas d'accord. Les getters ne sont jamais appelés explicitement en JSF. Via la page xhtml, on fait référence aux managed beans, et aux noms de leurs variables directement. Si les conventions de nommages sont respectées alors le getter sera appelé implicitement et automatiquement.

    oui mais là ce n'est pas un getter, c'est une méthode qui prend un paramètre et qui ressemble à un getter parce qu'il y a "get" mais ce n'est pas un getter.

  12. #12
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Citation Envoyé par maserati Voir le message
    Désolé pour l'oublie, sinon j'ai maintenant cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error Traced[line: 39] Element type "f:selectItems" must be followed by either attribute specifications, ">" or "/>".

    est-ce que tu peux poster ta page JSF en entier.
    tu as mis quoi dans le value de ton SelectOneMenu ? toujours rien ?

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/08/2007, 13h18
  2. [JSTL] Deux boucles imbriquées
    Par Esil2008 dans le forum Taglibs
    Réponses: 1
    Dernier message: 31/07/2007, 18h46
  3. Deux requetes imbriquées
    Par Thib dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/01/2007, 16h27
  4. Deux TANTQUE imbriqués
    Par aloula dans le forum Cobol
    Réponses: 2
    Dernier message: 31/05/2006, 00h02
  5. Deux méthodes de création Dll
    Par Hokagge dans le forum MFC
    Réponses: 6
    Dernier message: 12/01/2006, 11h04

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