Paramètres de page

Résolu
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   -  
Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   -
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 :)

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   651
 
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   Statut Membre Dernière intervention   651
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   651
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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