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 :

Impossible de récupérer un paramètre dans l'URL


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Par défaut Impossible de récupérer un paramètre dans l'URL
    Bonjour,

    Je n'arrive pas à récupérer un paramètre dans l'une de mes pages :

    URL : http://localhost:8080/techniweb/page...on.sav?id=5555

    XHTML :
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://xmlns.jcp.org/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:p="http://primefaces.org/ui"
          xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
        <h:head>
            <title>LinkRedirection</title>
        </h:head>
        <h:body>
            <h:form>
                <p:remoteCommand action="#{linkRedirectionBean.redirect()}" autoRun="true"/>
            </h:form>
        </h:body>
    </html>

    ManagedBean :
    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
     
    @Named
    @ViewScoped
    public class LinkRedirectionBean implements Serializable {
     
        @PostConstruct
        public void init(){
            System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));
        }
     
        public String redirect(){
            return "";
        }
     
    }
    Le "System.out.println" renvoie toujours "null"

    J'ai essayer de mettre le "System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));" dans le PostConstruct une autre page déjà codé et sa marche, je ne sais plus quoi faire

    Une idée ??

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour,

    Comme ça a vue de nez je serais tenté de dire que c'est par ce que tu as un @ViewScoped et que le @PostConstruct est lancé juste après l'instanciation de la classe, pas au moment de ta requête.
    As tu essayé de faire ton System.out dans la méthode redirect ?
    Ou alors passer en @RequestScoped ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Par défaut
    Alors j'ai fait les modifs :

    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
     
    @Named
    @RequestScoped
    public class LinkRedirectionBean implements Serializable {
     
        @PostConstruct
        public void init(){
            System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));
        }
     
        public String redirect(){
            System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));
            return "";
        }
     
    }
    Idem : renvoie null dans les deux System.out.print()

    J'ai aussi remarqué un truc bizarre: en mod debug dans "FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()" j'ai 6 éléments à l’intérieur qui n'ont rien à voir avec mon url

    Dans un autre Bean manager (en ViewScoped) sa marche nickel, et dans "FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()" j'ai bien 1 seul élément avec id=5555

    ManagedBean où sa marche :

    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
     
    @Named
    @ViewScoped
    public class GestionCreationBean implements Serializable {
     
        @Inject
        private ContactFacade contactFacade;
        @Inject
        private EmployeFacade employeFacade;
        @Inject
        private UserSessionBean userSession;
        @Inject
        private TypeInterventionFacade typeInterventionFacade;
        @Inject
        private FinancementFacade financementFacade;
        @Inject
        private NiveauBlocageFacade niveauBlocageFacade;
        @Inject
        private InterventionFacade interventionFacade;
        @Inject
        private SocieteFacade societeFacade;
        @Inject
        private LogsFacade logsFacade;
        @Inject
        private ExchangeWebService ews;
     
        private Contact contactDeRecherche;
        private Contact contactSelected;
        private String libelleFieldSet;
        private Intervention intervention;
        private Appel appel;
     
        @PostConstruct
        public void init() {
            System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"));
            this.contactDeRecherche = null;
            this.contactSelected = null;
            this.intervention = new Intervention();
            this.appel = new Appel();
        }
    JSF se fous de moi ... lol

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut
    as tu essayé en enlevant le viewScoped?

    Eric

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Par défaut
    Oui si te regarde j'ai mis mon ManagedBean en RequestScope, et de toute façon le ManagedBean où cela fonctionne est en ViewScoped donc pas de raison que ce soit sa je pense

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut peux-tu faire juste un test voir:

    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
     
    @ManagedBean
    @ViewScoped
    public class LinkRedirectionBean implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -3283630074515953008L;
     
    	private String test;
     
    	@PostConstruct
    	public void init() {
    		String a = (FacesContext.getCurrentInstance().getExternalContext()
    				.getRequestParameterMap().get("id"));
    		test = a;
    		System.out.println(a);
    	}
     
    	public String redirect() {
    		return "";
    	}
     
    	public String getTest() {
    		return test;
    	}
     
    	public void setTest(String test) {
    		this.test = test;
    	}
     
    }
    et dans ton code html:
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets">
        <h:head>
            <title>LinkRedirection</title>
        </h:head>
        <h:body>
            <h:form>
                <h:inputText value="#{linkRedirectionBean.test}"/>
                <h:commandButton action="#{linkRedirectionBean.redirect}" />
            </h:form>
        </h:body>
    </html>
    Eric

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Par défaut
    Alors je viens de faire un test
    J'ai juste mis un <h:outputText value="#{param.id}"/> dans mon code

    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
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://xmlns.jcp.org/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:p="http://primefaces.org/ui"
          xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
        <h:head>
            <title>LinkRedirection</title>
        </h:head>
        <h:body>
            <h:form>
                <h:outputText value="#{param.id}"/>
                <p:remoteCommand action="#{linkRedirectionBean.redirect()}" autoRun="true"/>
            </h:form>
        </h:body>
    </html>
    Le outputText affiche bien mon id dans la page mais j'ai toujours null dans mes System.out.print() .... je sais plus quoi penser la ...

  8. #8
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    peux-tu changer ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{param.id}"/>
    en ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{linkRedirectionBean.test}"/>
    Merci

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Par défaut
    Dingue ton code marche ....

    J'ai bien mon id dans mon System.out.println() maintenant!!

    Comment sa se fait ?

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est peut-être lié à CDI, j'ai fait le même test avec l'annotation @ManagedBean et ça fonctionne bien...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Par défaut Résolution
    Alors du coup rien à voir avec CDI

    Voici la bonne manière pour récupérer des paramètres en utilisant la redirection déclaré dans le Managedbean
    J'utilise JSF et primefaces

    Exemple d'URL : monsite.mondomaine.fr/monsite/mapage.jsf?param1=1111&param2=2222

    Page XHTML liée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <h:head>
            <title>LinkRedirection</title>
            <f:metadata>
                <f:viewParam name="param1" value="#{monManagedBean.param1}"/>
                <f:viewParam name="param2" value="#{monManagedbean.param2}"/>
            </f:metadata>
        </h:head>
            <h:form>
                <p:remoteCommand action="#{monManagedbean.redirect()}" autoRun="true" />
            </h:form>
        </h:body>
    ManagedBean lié :
    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
     
    @Named
    @ViewScoped
    public class MonManagedBean implements Serializable {
     
     
        private String param1;
        private String param2;
     
     
        @PostConstruct
        public void init() {
     
        }
     
        public String redirect() {
            //Récupération des paramètres pour en faire ce que l'on veut
            Integer.valueOf(param1);
            Integer.valueOf(param2);
     
            //redirection
            return "monAutrePage?faces-redirect=true"; 
     
     
        }
     
           //Getter & Setter
     
    }
    Voila, je clos le sujet.

    MERCI à TOUS !

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Juste une précision :

    La méthode avec <f:viewParam> permet juste de préciser la propriété cible d'un paramètre dans le managedBean et de faire l'affectation automatiquement MAIS la méthode simple en codant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")
    fonctionne également (en tout cas, chez moi c'est le cas)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Récupérer un paramètre dans l'URL
    Par monta_amri dans le forum JSF
    Réponses: 0
    Dernier message: 03/04/2015, 16h08
  2. [2008R2] Impossible de passer des paramètres dans l'URL du rapport
    Par martial80 dans le forum SSRS
    Réponses: 21
    Dernier message: 31/05/2012, 17h46
  3. Récupérer un paramètre dans une URL
    Par CodeKiller dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 21/07/2008, 10h34
  4. Récupérer un paramètre dans l'url
    Par figatelliSTI dans le forum Zend Framework
    Réponses: 1
    Dernier message: 15/04/2008, 16h29
  5. récupérer les paramètres dans une url
    Par asetti dans le forum ASP
    Réponses: 6
    Dernier message: 23/12/2005, 10h08

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