Regardez la fin du post, il concerne la consultation d'un javabean à partir d'une servlet java.
 
			
			






 
			
			
			
			 
			
				
 Interroger les valeur d1 [ javabean ] avec une [ servlet ]
 Interroger les valeur d1 [ javabean ] avec une [ servlet ]
				
				
						
							
							
						
						
				Regardez la fin du post, il concerne la consultation d'un javabean à partir d'une servlet java.
 
 
				
				
						
						
				En fait tu te trompes
dans ta jsp tu mets comme id: id_bean
Et dans ta servlet tu recherche l'attribut : idbean
Donc tu te ramasses un NullPointerException
Bonne chance
 
			
			






 
			
			
			
			 
			
				
 appeler un bean à partir d'une classe java.
 appeler un bean à partir d'une classe java.
				
				
						
						
				Non non non, le problème viens pas de la syntaxe, j'ai créé rapidement cet exemple pour la demonstration.
Mon problème c'est surtout comment faire pour appeler un bean à partir d'une classe java?
Comment récupérer les valeurs qui ont été instanciées.?
Dans ma classe (ClassX) j'ai essayé de créer une instance de TestServlet
ex :
TestServlet ObjTest = new TestServlet;
this.nomclassx = ObjTest.nom;
je peux actuellement récupérer les valeurs de mes javabeans dans toutes mes pages JSP grace à la portée SESSION.
Mais c'est dans une classe indépendante que je souhaite récupérer la valeur d'une propriété de mon bean. comment faire ? suis je sur la bonne piste ?
Merci quand même.
 
 
				
				
						
						
				Pourquoi tu n'instancies pas ta classe java dans la servlet en lui passant ton bean
exemple dans la servlet
et dans le constructeur de ta classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part TaClasse taClasse = new TaClasse(tonBean);
Ensuite si tu souhaites utiliser cette classe tout au long de la session tu l'ajoutes en attribute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7private TonBean bean; public TaClasse(TonBean bean) { this.bean = bean; }
Ou alors tu dois passer par un singleton au niveau session et non au niveau VM. Mais là tu m'en demande de trop car je ne sais pas comment implémenter ce genre de design.
Code : Sélectionner tout - Visualiser dans une fenêtre à part session.setAttribute("taClasse",taClasse);
 
			
			






 
			
			
			
			 
			
				
 [ servlet ] [ javabean ]
 [ servlet ] [ javabean ]
				
				
						
						
				...
 
 
				
				
						
						
				Saurais-tu séparer ton code car cela me parait brouillon.
Montre moi tes jsp, servlets, beans et classes java complètes séparément.
 
			
			






 
			
			
			
			 
			
				
 code
 code
				
				
						
						
				ok je te prépare ça.
 
			
			






 
			
			
			
			 
			
				
 javabeans dans un dossier include\beans
 javabeans dans un dossier include\beans
				
				
						
						
				javabean : dossier
javabean : maclasse
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
 
			
			






 
			
			
			
			 
			
				
 Ma classe dossier
 Ma classe dossier
				
				
						
						
				La classe Dossier (code non exhaustif) : elle respecte la syntaxe javabean
(get, set, is)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
34public class Dossier implements Serializable { private int dos_id; private String dos_nom; private String dos_prenom; //Constructeur de la classe dossier. public Dossier (){ } //Accesseurs. public int getDos_id () { return this.dos_id; } public String getDos_nom() { return this.dos_nom; } public String getDos_prenom() { return this.dos_prenom; } //Mutateurs. public void setDos_id (int dos_id) { this.dos_id = dos_id; } public void setDos_nom(String dos_nom) { if(dos_nom!=null && dos_nom!="") this.dos_nom = dos_nom; } }
 
			
			






 
			
			
			
			 
			
				
 MaClasse
 MaClasse
				
				
						
						
				MaClasse respecte aussi la syntaxe javabeans elle est dans le même package que Dossier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public class MaClasse { private String nom; private String nom2="titi"; //constructeur MaClasse(Dossier monbean) { this.nom = monbean.getNom(); } public String getNom() { return this.nom; } //ici je souhaite comparer le nom du dossier en cours et celui de MaClasse public void Comparaison_nom(nom1, nom2) { .... } ... }
 
			
			






 
			
			
			
			 
			
				
 TestServlet
 TestServlet
				
				
						
						
				C'est à partir de cette servlet que je souhaite récupérer l'instance en cours de mon bean dossier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14package com.modules.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session = req.getSession(); com.Dossier myBean = (com.Dossier) session.getAttribute("dossier"); MaClasse ObjClass = new MaClasse(myBean); } }
 
			
			






 
			
			
			
			 
			
				
 ma page d'index
 ma page d'index
				
				
						
						
				Cette page inclue les javabeans
Instancie la classe dossier et associe à la propriété nom = toto
L'affichage de la propriété nom de MaClasse est ici nécéssaire uniquement pour le test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
 
			
			






 
			
			
			
			 
			
				
 conclusion
 conclusion
				
				
						
						
				Je devrais logiquement avoir à l'affichage "toto" non? Je reste perplexe
 
 
				
				
						
						
				Je comprends pas très ta manière de travailler.
Tu instancies une classe dans ta jsp et ensuite tu la réinstancies dans ta servlet.
Deuxièmement, je comprends pas pourquoi tu souhaites comparer deux classes.:
Vu que le bean est propre à la session je n'en vois pas l'interêt
Voilà ce que moi je propose
Tu crées un jsp avec un form que tu soumets à ta servlet. J'écris le code approximativement, cela se peut qu'il y ait des erreurs.
Ensuite tu récupères le bean dans ta servlet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
Et ensuite tu peux réafficher ce que tu veux dans ta deuxième jsp
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20package com.modules.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) { HttpSession session = requset.getSession(); com.Dossier myBean = (com.Dossier) session.getAttribute("dossier"); MaClasse ObjClass = new MaClasse(myBean); } }
Voilà
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
 Re: ma page d'index
 Re: ma page d'index
				
				
						
						
				Je ne suis pas sur .. lorsque tu intancie ta servlet ... ta methode service() de TestServlet() n'est pas appelé... donc ta classe maClasse n'est pas initialisé avec ton bean Dossier...Envoyé par jmeclipse
Pour verifier met une trace dans le constructeur de ta classe maClasse ..
 
 
				
				
						
						
				En effet, petite erreur de compréhension du modèle des Servlet, seul le container web peu instancier un servlet et le mettre à disposition.
On n'accède jamais à un servlet par une référence mais par une URL.
 
 
				
				
						
						
				Ah oui en effet j'avais pas remarqué cette erreurEnvoyé par Alwin

 
			
			






 
			
			
			
			 
			
				
 comparer la valeur d'un bean dans une classe
 comparer la valeur d'un bean dans une classe
				
				
						
						
				Tu as raison le bean représente ma session.
A force de chercher une solution, j'ai dévié de mon objectif premier : utiliser dans le traitement d'une classe la propriété d'un javabean.
Je souhaite interroger le bean à partir de ma classe MaClasse; cela n'est possible apparament qu'au travers une servlet. C'est pour ça que j'essaye desepérement d'utiliser une servlet pour arriver à mes fins.
Et tu as raison sur "seul le container web peu instancier un servlet et le mettre à disposition"
Alors que faire ? comment appeler cette servlet?
 
 
				
				
						
						
				C'est bien ce qui me semblait..Envoyé par Alwin

 
			
			






 
			
			
			
			 
			
				
 dommage
 dommage
				
				
						
						
							
						
				Il est donc impossible de récupérer la valeur d'un javabean dans le code d'une classe?
Partager