Paramètres de page

Résolu/Fermé
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 - 21 avril 2016 à 12:09
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 - 25 avril 2016 à 11:51
Bonjour,

J'ai un petit problème que je vais vous expliquer.

Soit une page A possédant un bouton de commande permettant de charger une page B en lui indiquant des paramètres via l'url. (Cette page marche parfaitement).

Ce que je dois faire c'est mettre une page que j'appellerai X entre A et B.

Donc mes paramètres doivent faire A->X puis X->B.
Hors il s'avère que mes paramètres vont de A vers X mais quand j'appelle dans le code pour X vers B, les paramètres sont nuls :/

Mon code pour les paramètres :
try {
			FacesContext fc = FacesContext.getCurrentInstance();
			Map<String, String> params1 = fc.getExternalContext().getRequestParameterMap();
			nomPresse = params1.get("nomPresse");
			nomMoule = params1.get("nomMoule");
			nomReference = params1.get("nomReference");
			nomEquipe = params1.get("nomEquipe");
			nomEquipe = nomEquipe.substring(1);
			nomEquipe = "É" + nomEquipe;
			if (nomPresse != null) {
				accueil = true;
			}
			// fnc.setNiveau_fnc(10);
		} catch (Exception e) {
			System.out.print("Fnc créer depuis la page ajouter une FNC!");
		}


Je développe en JEE sur la plate forme Eclipse Mars.

Merci d'avance pour l'aide :)
A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
21 avril 2016 à 13:19
Bonjour,

Tout d'abord je ne connais pas JSF, donc ça va rester théorique...

Tu ne devrais pas faire confiance à ta page X pour te renvoyer les infos de la page A quand tu en auras besoin dans B. Si tu as besoin de ces données, stocke les sur le serveur au moment A→X et récupère les au moment X→B tu auras la garantie que ces données n'ont pas été corrompu entre A et B.

Sinon, tu peux utiliser un cookie, A→X créé un cookie, et X→B le récupère, ça te permet de faire transiter des données sans passer par les paramètres de GET/POST, mais attention: un cookie peut être modifié, il n'y a donc pas l'absolu certitude que ce sont bien les même données que celles de A.
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
21 avril 2016 à 13:25
Ok je vois ce que tu veux dire. Il faudrait donc que je déclare des variables internes pour le transit des données.
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
21 avril 2016 à 17:38
me revoila, je n'ai pas réussis à passer par une variable car le bean se réinitialise à chaque fois (il fait son job quoi).
J'ai trouvé comme formule :
String tst = request.getParameter("i"); 

Sur des forums java mais je ne peux pas l'utiliser, je ne comprends pas :/
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
21 avril 2016 à 19:36
Essayes ceci (je fais ça de tête, il faudra peut être adapter un peu)

FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpSession session = ec.getSession();

// écriture des paramètres en session (A → X)
Map<String, String> params = ec.getRequestParameterMap();
session.setAttribute("previousParameters", params);

// récupération des paramètres dans la session (X → B)
Map<String, String> params = session.getAttribute("previousParameters");
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
22 avril 2016 à 09:04
http://localhost:8080/GmaoMoulage/creation/creation.jsf?nomPresse=100&nomMoule=290 54 308&nomReference=S773700&nomEquipe= quipe A

J'ai ça comme paramètres donc 4 variables transmises.
Map<String, String> params = session.getAttribute("previousParameters");

Je pourrai récupérer tous les paramètres avec cette ligne?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
22 avril 2016 à 13:53
Non, mais j'avoue que je t'ai donné du code sans explication...

Lors de la connexion d'un utilisateur tu peux lui attribuer une session sur le serveur.
Tant que la session est valide (elle expire au bout d'un certain temps - la durée est configurable) chaque requête sera traitée par la même session, tu peux donc stocker des valeurs dans cette session lors d'une première requête pour les récupérer lors des requêtes suivantes.

Par exemple : si tu t'enregistres sur un site web avec un login/mot de passe, généralement tu peux travailler plusieurs heures sans avoir besoin de te reconnecter.

Techniquement l'identifiant de la session est transmis dans un cookie "jsessionid" lors de la création de la session et récupéré à chaque fois pour retrouver la session sur le serveur.

Voir : Servlets - Gestion des sessions

Dans l'exemple de code que j'ai donné, je récupère les paramètres de ta requête (la Map), je les stockes tel quel dans la session, et à la requête suivante je les récupères, comme s'ils venaient de m'être transmis alors qu'en fait ils m'ont été transmis à la requête précédente.

Remarque : j'aurais pu être plus fin, et au lieu de stocker toute la Map en session, stocker individuellement chaque paramètre nomPresse, nomMoule, etc.
0