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 :

Ajouter un paramètre dans un POST depuis un ManagedBean


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut Ajouter un paramètre dans un POST depuis un ManagedBean
    Bonjour ,
    J'ai un petit problème . J'ai une page jsf qui pour enregistrer des valeurs en appelant la couche DAO . Après l'insertion , je veux récupérer l'identifiant (auto généré) et faire une redirection ver une autre page . L'insertion se passe bien et la redirection aussi mais quand je veux ajouter des paramètres dans le post , je n'arrive pas .
    le code pour l'insertion des paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     String key = "jjjjjj";
     
    	  FacesContext context = FacesContext.getCurrentInstance();
    	  context.getExternalContext().getRequestMap().put("key", key);
    Code de récupération
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
    		 String ide =params.get("key");
    Quand j'ouvre l'outil de développement pour voir la recette , je trouve pas le paramètre envoyé . J'ai essyayé de l'afficher dans le log , j'ai la valeur null. Une idée ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 153
    Par défaut
    premièrement, tu devrais récupérer le paramètre que tu ajoute à ta requête par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("key");
    et no pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
    de plus, il me semble et c'est bien possible que pendant la redirection, certains paramètres de la requête soient détruit. car dans la documentation il est dit que getRequestParameterMap() retourne l'ensemble des paramètres pour la requête en cours. En résumé, pendand que tu est sur la vue A, tu ajoute un paramètre "key" aux paramètre de la reqûete en cours; ensuite tu envoi une autre requête pour la redirection dont les valeurs des paramètre changent.
    j'ai souvent gardé les information plutôt dans la session. ça dure plus longtemps

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut
    Bonjour ,
    J'ai trouvé une solution .Je vais la poster peut être ça aidera d'autres personnes .
    Insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("key", id);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int key =(Integer) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("key");
    Il faut utiliser le Map de getApplicationMap() .
    Bonne journée

  4. #4
    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
    SURTOUT PAS !
    Là, tu positionnes un attribut pour tous les utilisateurs de ton application, autant dire que si 2 personnes font la même chose en même temps, seul le dernier aura la bonne valeur... Bref, très mauvais choix.

    Tu devrais passer par la session, ce serait bien mieux, sauf si tu as plusieurs onglets dans ton navigateur sur la même application.

    Le problème à la base vient du fait que tu fais une redirection, du coup, ce n'est plus le même request, d'où ton problème en passant par un attribut dans requestMap.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut
    Bah je suis nouveau dans ce monde du JSF .Si j'enregistre dans la session c'est plus logique car ça concerne chaque utilisateur . Pour le moment je vais la laiser comme ça car l'application est en pré-production jusqu’à je maîtrise un peu ce framework . Je commence à poser une question . Et ce qu'il y a des entreprises qui utilisent ce framework pour des gros projets ?

  6. #6
    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
    Qu'entends-tu par "gros projets" ? Des projets qui dépassent les 10 écrans ? C'est très subjectif...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/10/2009, 03h50
  2. Réponses: 8
    Dernier message: 30/04/2009, 10h39
  3. Réponses: 5
    Dernier message: 26/11/2008, 11h03
  4. Ajouter plusieurs paramètres dans un lien
    Par Orb Dorb dans le forum Flash
    Réponses: 4
    Dernier message: 30/10/2008, 04h03
  5. Ajout de paramètres dans le path du forward
    Par sylvain_neus dans le forum Struts 1
    Réponses: 6
    Dernier message: 14/11/2007, 17h31

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