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 :

JSF managed property probleme


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Par défaut JSF managed property probleme
    Bonjour,

    Je crée une appli web avec le Visual Web Pack donc avec JSF mais aussi avec le Framework Spring et Hibernate.

    J'ai un BeanProduit auquel j'ajoute une proprieté BeanLocaliseurService qui me retourne les services disponible pour un produit. Donc en gros dans ma classe BeanProduit j'ai un attribut de type BeanLocalisuerService (ou plutot du type de l'interface qu'implemente mon bean) et je veux que cet attribut soit initialisé automatiquement.

    Donc j'ai ca dans mon managed-bean.xml :

    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
        <managed-bean>
            <managed-bean-name>BeanProduit</managed-bean-name>
            <managed-bean-class>minimarket.BeanProduit</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
            <managed-property>
                <property-name>localiseurService</property-name>
                <property-class>minimarket.BeanLocaliserService</property-class>
                <value>#{beanLocaliserService}</value>
            </managed-property>
        </managed-bean>
     
        <managed-bean>
            <managed-bean-name>beanLocaliserService</managed-bean-name>
            <managed-bean-class>minimarket.BeanLocaliserService</managed-bean-class>
            <managed-bean-scope>application</managed-bean-scope>
        </managed-bean>
    Donc mon BeanProduit est bien initialisé au demarrage, apel au contructeur et tout. Par contre mon BeanLocaliserService n'est pas initalisé, jamais le constructeur de cette classe n'est apellé et dans BeanProduit le setLocaliseurService est bien apellé mais avec une valeur null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public void setLocaliseurService(ILocaliserService localiseurService) {
            this.localiseurService = localiseurService;
            System.out.print("ServiceLcaliseur initialisé = "+this.localiseurService);
            this.init();
        }
    Le System.out ecrit que localiseurService = null :/

    Qu'est ce que j'ai fais de mal je ne comprend pas du tout le principe. Si quelqu'un a une solution ca m'aiderai bcp !!
    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    ton service porte le nom de {beanLocaliserService} donc ta property dans ton managed bean devra porter le nom de beanLocaliserService (et les accesseurs dessus)

    ou alors change le scope en session

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Par défaut
    Ca change quoi de le passer en session ?

    Sinon je ne comprend pas, je croyais que le property-name etait justement le nom de l'attribut dans mon bean Produit.
    Moi j'ai ca dans mon bean Produit :
    private ILocaliserService localiseurService;

    Donc dans property-name j'ai mis localiseurService
    En classe j'ai mis le chemin de la classe BeanLocaliserName qui implemente l'interface ILocaliserService.
    Et en value c'est ce que je comprend moins, j'ai essayé diverses choses comme le nom de la classe BeanLocaliserName ou alors le nom de la propriete-name quand je declare mon BeanLocaliserService dans mon managed-bean.xml
    Faut mettre quoi alors, localiseurService c ca ?

    Merci !!

    Edit :
    Nan desolé j'y arrive pas, quelque soit les combinaisons que je fait soit ca me renvoi null soit j'ai cette erreur en ouvrant la page "The server encountered an internal error () that prevented it from fulfilling this request." :/

    Si je comprend bien, le nom de la propriété est le meme que le nom de mon attribut dans ma classe et la value est la meme que le nom du bean que j'utilise dans sa declaration dans managed-bean.xml Mais ca ne fonctionne pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Par défaut
    Personne pour m'aider, je n'y arrive tjs pas

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Par défaut
    salut
    lors de chargement du faces-config il execute ligne par ligne alors si jété a ta place j'essairé ca :

    <managed-bean>
    <managed-bean-name>beanLocaliserService</managed-bean-name>
    <managed-bean-class>minimarket.BeanLocaliserService</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
    </managed-bean>

    <managed-bean>
    <managed-bean-name>BeanProduit</managed-bean-name>
    <managed-bean-class>minimarket.BeanProduit</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
    <property-name>localiseurService</property-name>
    <property-class>minimarket.BeanLocaliserService</property-class>
    <value>#{beanLocaliserService}</value>
    </managed-property>
    </managed-bean>

    je ne suis pas sur que ca marche
    bon courrage

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Par défaut
    Ca ne marche tjs pas, avec le code exact que tu met il me met "The servcer encoutered an internat error() that prevented it from fullfilling the request"

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    ça me parait normal que cela ne marche pas. tu lui set ton bean la value de ton #{beanLocaliserService} mais celui ci n'a jamais été initialisé. C'est pas parce que il est déclaré dans ton faces-config qu'il va s'initialiser. Et ce n'est pas non plus parce que tu le set à BeanProduit qu'il va s'initialiser. Quand tu set un objet, tu ne passe pas par le constructeur...

    Avant de faire appel à BeanProduit, initialise ton beanLocaliserService en faisant un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    beanLocaliserService bls = new beanLocaliserService();
    FacesContext().getCurrentInstance().createValueBinding("#{beanLocaliserService }").setValue(FacesContext().getCurrentInstance(), bls);

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Par défaut
    Merci a tlm ca marche maintenant !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut heiin?
    Comment ca c'est normal que ca ne marche pas, JSF n'est il pas supposé disposer d'un container d'inversion de contrôle facon spring mais en light?

    Ca devrait marcher (du moins ca marche avec moi)

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Par défaut
    Citation Envoyé par rageice Voir le message
    Comment ca c'est normal que ca ne marche pas, JSF n'est il pas supposé disposer d'un container d'inversion de contrôle facon spring mais en light?

    Ca devrait marcher (du moins ca marche avec moi)
    je plussoie !
    Je rencontre le même soucis, et je trouve extrêmement dommage de devoir initialiser le bean...
    Quelqu'un a t il plus de précisions à donner ?

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

Discussions similaires

  1. [JSF 1.2] Probleme avec le composant DataTable!
    Par baradoss dans le forum JSF
    Réponses: 10
    Dernier message: 08/06/2008, 21h08
  2. [Framework] [CLASSPATH][PROPERTIES] probleme declaration classpath
    Par grelon dans le forum Spring
    Réponses: 17
    Dernier message: 16/11/2007, 17h28
  3. [JSF] : fichier .properties
    Par lecitoyen dans le forum JSF
    Réponses: 2
    Dernier message: 20/06/2007, 08h12
  4. [AJAX] manager AJAX probleme de porté de variable
    Par ele51 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2007, 16h47
  5. properties problem execution
    Par lazzeroni dans le forum iReport
    Réponses: 2
    Dernier message: 17/08/2006, 09h08

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