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 :

Inputtext JSF non récuperable


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut Inputtext JSF non récuperable
    Bonjour a tous !
    Alors voila, j ai dans un de mes formulaire un inputtext non relié à un backingbean.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:inputText value="0.0" id="apportexterieur"></h:inputText><BR/>
    Je souhaiterais now pouvoir récuperer la valeur saisie dans une classe java.
    L'ennui est que toutes mes tentatives échouent.
    En effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Map session = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
    System.out.println(session.containsKey("apportexterieur"));
    me retourne false.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UIComponent component= (UIComponent) FacesContext.getCurrentInstance().getViewRoot().findComponent("apportexterieur");
    float nouveaumontant = Float.parseFloat(component.getValue().toString());
    ne marche pas non plus.

    Je pourrais créer un binding avec un bean mais je souhaiterais récupérer cette valeur sans avoir a faire un value="#{...}" vu que cette valeur ne me sera plus utile dans aucun de mes beans.

    Merci de votre aide mes recherches google n ayant rien données.

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    J'avoue que ta démarche est assez étrange... Utiliser un value="#{monBean.maValeur}" serait quand même beaucoup plus simple...

    Pour résoudre ton problème, il faut donner l'ID complet de ton inputText à la méthode findComponent.
    Qu'entends-je par ID complet ? Il s'agit de l'ID du composant préfixé par les ID des containers dans lequel il se trouve (un containeur est un UIComponent implémentant l'interface NamingContainer) et séparé par ':'. Le containeur le plus fréquent est le form.
    Autrement dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:form id="monFormulaire">
        <h:inputText id="monInput" .../>
        ...
    Dans ce cas, l'ID complet de l'inputText sera non pas monInput, mais monFormulaire:monInput.
    D'où l'importance de donner des IDs au formulaire...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut Merci mais tj soucis ..
    Je te remercie pour ta réponse qui m'a permis d'avancé. Toutefois je ne parviens toujours pas a obtenir la valeur de mon champ texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Map session = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
    System.out.println(session.containsKey("monform:apportexterieur"));
    UIComponent monComponent = (UIComponent) FacesContext.getCurrentInstance().getViewRoot().findComponent("monform:apportexterieur:value");
        	String apport1= monComponent.getClientId(context);
        	String apport2= monComponent.toString();
        	System.out.println(apport1);
        	System.out.println(apport2);
    Me permet d'obtenir:

    false
    monform:apportexterieur
    javax.faces.component.html.HtmlInputText@946d22

    As tu une idée ? (Excuse moi d'insister )

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Je me trompes peut être ... ou je n'ai pas compris ce que tu veux faire mais as tu essayé de faire ça ?
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:form>
      <h:inputText value="#{tonBean.valeur}" />
      <h:commandButton value="Go" action="#{tonBean.action}" />
    </h:form>
    et dans TonBean.java (declaré comme managed-bean dans faces-config.xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class TonBean {
      private String valeur;//ajoutes le getter + le setter
     
      public String action(){
        System.out.println(value);//La, ça t'affiche ce que tu as tapé dans le champ texte ! Eh oui ;-)
      }
    }
    @+

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Essaie de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HtmlInputText monComponent = (HtmlInputText) FacesContext.getCurrentInstance().getViewRoot().findComponent("...");
    monComponent.getValue();
    Mais je conseille vraiment d'utiliser la méthode présentée par noresis... Bien plus clean...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    présentée par noresis





Discussions similaires

  1. inputText jsf toujours null
    Par gotteserbin dans le forum JSF
    Réponses: 1
    Dernier message: 19/01/2011, 15h19
  2. Commentaires JSF non visibles coté client
    Par StefGac dans le forum JSF
    Réponses: 2
    Dernier message: 07/12/2010, 11h41
  3. Problème de code JSF non interprété
    Par tmanta7 dans le forum JSF
    Réponses: 1
    Dernier message: 15/11/2010, 13h41
  4. Tag JSF non traduit
    Par diva_69 dans le forum JSF
    Réponses: 1
    Dernier message: 24/08/2009, 10h31
  5. [Cookies] Non récuperation d'une valeur de session
    Par nicko5959 dans le forum Langage
    Réponses: 3
    Dernier message: 29/12/2006, 17h08

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