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 :

Property not found on type


Sujet :

JSF Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 256
    Points
    256
    Par défaut Property not found on type
    Bonjour,

    Je suis face à un problème assez surprenant et je ne vois pas du tout comment trouver la solution. J'ai chercher sur internet mais je n'ai rien trouvé de probant.

    J'utilise un managed bean, qui possède deux méthodes (pour simplifier). Ces dexu méthodes retournent chacune une List<SelectItem> qui seras utilisée dans une balise <f:selectItems />.

    La signature des méthodes est :


    Je tente d'y accéder via les attributs et .

    Le problème c'est que l'un des deux (#{bean.lots}) ne semble pas être trouvé. Je ne comprends vraiment pas pourquoi. Mon bean est en scope session.

    Si vous pouviez me donner des pistes sur comment trouver l'erreur.

    Bonne journée

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par barmic Voir le message
    Le problème c'est que l'un des deux (#{bean.lots}) ne semble pas être trouvé. Je ne comprends vraiment pas pourquoi.
    Pourriez vosu être plus précis (du code, ce que vous faites, le résultat obtenu, le résultat escompté)

  3. #3
    Membre actif
    Homme Profil pro
    Développeur
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 256
    Points
    256
    Par défaut
    ce que je veux obtenir c'est deux listes déroulantes, on choisi un élément du premier et le second se met à jour automatiquement. La première liste déroulante représente des produit et la seconde des lots.

    Dans mon managed Bean, j'ai déclaré une liste de lot ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public final class ListLot {
        private List<Lot> lots;
        private ProductsDAO products;
        private String id, prober, product;
        private Logger logger;
    Celle-ci est initialisé avec une ArrayList de Lot vide dans mon constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public ListLot() {
            logger = LoggerFactory.getLogger(ListLot.class);
     
            products = new Products();
            lots = new ArrayList<Lot>();
            id = prober = product = "";
        }
    Ensuite ma fonction getLots pour récupérer l'attribut Lot sous forme de liste de SelectItem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public List getLots() {
            List<SelectItem> l = new ArrayList<SelectItem>(lots.size());
            for (Lot lo : lots) {
                l.add(new SelectItem(lo.getId()));
            }
            return l;
        }
    La liste des lots est recherché via le ProductsDAO ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public void setProduct(final String prod) {
            product = prod;
            lots = products.getLotByProduct(prod);
        }

    Ensuite dans le JSF je tente de les utiliser ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <h:outputLabel value="Produit : " for="product" />
        <h:selectOneMenu value="#{listLot.product}" id="product">
            <f:selectItems value="#{listLot.products}" />
            <p:ajax event="change" update="lot1" />
        </h:selectOneMenu>
     
        <h:outputLabel value="Lot : " for="lot1" />
        <h:selectOneMenu value="#{listLot.id}" id="lot1">
            <f:selectItems value="#{listLot.lots}" />
        </h:selectOneMenu>
        <h:commandButton value="Chercher"
                    action="#{listLot.searchByProduct}" />
    La relation entre les deux se fait via le fichier faces-config.xml ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <managed-bean>
            <managed-bean-name>listLot</managed-bean-name>
            <managed-bean-class>com.st.etravellot.ListLot</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
    Au cas où j'aurais oublié des parties je met en pastbin les trois fichiers :
    ListLot.java http://pastebin.com/egLjTV4S
    search.xhtml http://pastebin.com/mCM4vVML
    faces-config.xml http://pastebin.com/JQryU7i8

    Merci beaucoup pour votre aide.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    soit vous ne passez jamais par setProduct soit la liste des lots pour ce produit est vide.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    Salut,
    De ce que j'ai vu de ton code la fonction setProduct() n'est jamais appelée, du coup ta liste est vide puisque tu l'as déclaré vide.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 55
    Points : 66
    Points
    66
    Par défaut
    Salut,

    fais une méthode qui initialise tes données et depuis la page jsf tu apelle cette fonction
    ------------------------------------------------------
    La connaissance s'aquiert par l'expérience, tout le reste n'est que de l'information (A. Einstein)

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par massari Voir le message
    Salut,
    De ce que j'ai vu de ton code la fonction setProduct() n'est jamais appelée,
    HUM! <h:selectOneMenu value="#{listLot.product}"

    Sous réserve que le ajax fonctionne, si c'est appelé.

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    HUM! <h:selectOneMenu value="#{listLot.product}"

    Sous réserve que le ajax fonctionne, si c'est appelé.
    Oui oui, mais vu que la fonction setProduct() qu'il a définit prend en argument un String qui est utilisé dans la requête pour initialiser la liste lots, je vois pas comment est géré cet argument.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public void setProduct(final String prod) {
            product = prod;
            lots = products.getLotByProduct(prod);
        }

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben c'est la valeur selectionnée dans le h:selectone qui est passé en argument, comme pour toutes les propriétés utilisées en value dans JSF

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    justement cette valeur est initialisé vide dans le constructeur, et il ne la gère nulle part ailleurs dans le code qu'il a montré. Enfin je l'ai pas vu.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est JSF qui la gère cette valeur, via le valuebind, comme ca fait trois fois que je le dit

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 67
    Points
    67
    Par défaut
    je t'ai compris, dans on premier post je n'avais pas pas considéré que setProduct était un setter ) mais ce n'est plus ça le problème.
    Regarde ce qu'il a passé au selectItem: Personedao products, (pas sur que ca marche mais comme personne n'en parle je suppose que si). Alors vu la manière dont products est initialisé je vois pas comment jsf va se débrouiller...
    Mais bon , désolé de t'avoir embêter avec ca .

Discussions similaires

  1. Property 'valeur.desc' not found on type
    Par Rony Rauzduel dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 31/07/2014, 10h03
  2. Property 'onAjoutProjetButton' not found on type
    Par SuperMicke34 dans le forum JSF
    Réponses: 2
    Dernier message: 27/11/2013, 10h47
  3. Réponses: 2
    Dernier message: 15/08/2012, 17h06
  4. Réponses: 1
    Dernier message: 22/01/2009, 18h36
  5. [jsp] property not found??
    Par champion dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/01/2005, 17h56

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