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 :

probleme methode createValueBinding


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut probleme methode createValueBinding
    Bonjours,
    Étant un débutant en jsf 2.0.3 Je me permet de poser mon problème.

    Voila j'ai cette méthode qui a était faite sous jsf 1.2 et je souhaite faire une mise a jour de cette méthode.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected Object getBackingBean(final HttpServletRequest request, final HttpServletResponse response, final String beanName) {
    FacesContext facesContext = getFacesContext(request,response);
    ValueBinding vb = facesContext.getApplication().createValueBinding("#{"+ beanName + "}");
    return vb.getValue(facesContext);
    }
    Après plusieurs heure de recherche sur internet et l'API voici Ma solution (qui ne fonctionne pas ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Object getBackingBean(String beanReference) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    final Object returnObject = facesContext.getApplication().getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{"+ beanReference + "}", String.class).getValue(facesContext.getELContext());
    return returnObject;
    }

    Le problème c'est que lors du déploiement j'ai une erreur :

    javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature


    Merci d'avance pour l'aide que vous pourriez me donner

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    La première méthode était déjà deprecated dans la version 1.2,
    la deuxième.

    Pourquoi tu as mis String.class, il faut la classe du bean:

    un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FacesContext context = FacesContext.getCurrentInstance();
      UserBean country = (UserBean) context.getApplication().getExpressionFactory()
    .createValueExpression(context.getELContext(), "#{userBean}", UserBean.class)
    .getValue(context.getELContext()) ;
    Sinon si le bean est dans un scope particulier tu peux le trouver directement dans la Map: ApplicationMap, RequestMap, SessionMap.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par punix81 Voir le message
    javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
    Vous avez manifestement embarqué avec votre application une version de JSF , Expressions Factory , jsp-api. Vous n'avez pas à les embarquer, c'est au conteneur de vous les fournir

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Après plusieur essayer voici la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      protected Object getBackingBean(final HttpServletRequest request, final HttpServletResponse response, final String beanName) {
            FacesContext facesContext = getFacesContext(request,response);
            //Old Version 
            // ValueBinding vb = facesContext.getApplication().createValueBinding("#{"+ beanName + "}");
            // return vb.getValue(arg0);  
     
            //New Version 
            ValueExpression ve =  facesContext.getApplication().getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{"+ beanName + "}", Object.class);
            return ve.getValue(facesContext.getELContext());
        }


    Merci à vous deux

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      protected Object getBackingBean(final HttpServletRequest request, final HttpServletResponse response, final String beanName) {
            FacesContext facesContext = getFacesContext(request,response);
            return facesContext.getApplication().getElResolver().getValue(
                    facesContext.getELContext(),
                    null,
                    beanName);
        }
    me semble plus propre

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

Discussions similaires

  1. Probleme methode repaint()
    Par cybercrisp dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 24/10/2006, 23h21
  2. [FLASH 8] Probleme méthode send de LoadVars
    Par dom_dev dans le forum Flash
    Réponses: 11
    Dernier message: 26/09/2006, 12h07
  3. Réponses: 2
    Dernier message: 23/08/2006, 15h47
  4. probleme methode="post"
    Par ardamus dans le forum Langage
    Réponses: 8
    Dernier message: 01/03/2006, 11h30
  5. Probleme Methode POST
    Par pidu dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/02/2006, 17h33

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