je fais pas un topic pour ça
Edit romaintaz: Bah moi siparce qu'il s'agit d'un autre sujet
J'ai honte mais je n'arrive plus à appeler une méthode de mon Bean en cliquant sur un pitit bouton
quelqu'un peut me rappeler la syntaxe ?![]()
je fais pas un topic pour ça
Edit romaintaz: Bah moi siparce qu'il s'agit d'un autre sujet
J'ai honte mais je n'arrive plus à appeler une méthode de mon Bean en cliquant sur un pitit bouton
quelqu'un peut me rappeler la syntaxe ?![]()
Deux façons de faire : avec une action (pratique quand il s'agit de faire une redirection vers une autre page) ou avec un actionListener...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <h:commandButton action="#{myBean.uneAction}" .../> <h:commandButton actionListener="#{myBean.autreAction}" .../>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public String uneAction() { // Code ... return idNavigationRuleDeMaNouvellePage; } public void autreAction(ActionEvent evt) { // Code ... }
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
ok moi je vais utiliser t'as deuxieme méthode, je n'ai pas de parametre à retourner, en faite la fonction appeler génere juste un document PDF ( jasper report )
par contre je ne comprend pas bien ceci :ActionEvent evt
enfin si je comprend, mais comment s'est il ce qu'est evt ??
edit: en fait j'avais failli faire comme ça, mais dans ma JSF apres avoir tapper
#{monBean. , il ne me proposait pas ma fonction donc j'en ai déduit qu'il ne la voyait pas
Un ActionListener est un listener sur une action, en l'occurrence le clic sur le bouton.
Cela génère donc un événement, un ActionEvent.
JSF va donc passer, par défaut, cet objet événement à la méthode liée à l'actionListener (dans mon exemple, myBean.autreAction).
Donc c'est automatique, tu n'as rien à faire...
Ce principe se retrouve dans les événements Swing d'ailleurs.
A noter que pour une action, si le String retourné est vide ou null, alors la navigation n'est pas lancée (i.e. l'utilisateur reste sur la même page).
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
ouai mais ce que je veux dire c'est que si j'ai plusieur actionlistner sur une page ( plusieur bouton on va dire )
mes fonction vont si je met partout le parametre evt ??
Enfin d'apres ce que tu viens de m'expliquer oui mais c'est ce qui me turlupinais
Si tu as plusieurs boutons, je te conseille de faire plusieurs méthodes dans ton bean :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <h:commandButton value="un" actionListener="#{myBean.doIt}" .../> <h:commandButton value="deux" actionListener="#{myBean.justDoIt}" .../>A vrai dire, tu pourrais ne faire qu'une seule méthode, et vérifier la source de l'événement et faire en fonction du bouton. Un peu comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void doIt(ActionEvent evt) { ... // Code pour le bouton "un" } public void justDoIt(ActionEvent evt) { ... // Code pour le bouton "deux" }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <h:commandButton id="un" value="un" actionListener="#{myBean.doIt}" .../> <h:commandButton id="deux" value="deux" actionListener="#{myBean.doIt}" .../>Mais je trouve ça crade, très confusant aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void doIt(ActionEvent evt) { HtmlCommandButton button = (HtmlCommandButton) evt.getSource(); if (button.getId().equals("un")) { // Code pour bouton "un"... } else if (button.getId().equals("deux")) { // Code pour bouton "deux"... } }
Si tu as 2 boutons sur ta page mais qui font la même chose (par exemple si tu mets un bouton en haut de page mais que tu veux le répéter en bas de page aussi, pour éviter à l'utilisateur de scroller), rien ne t'empêche que ces 2 boutons pointent sur la même méthode de ton bean.
Est-ce plus clair ?
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
ouai j'avais compri, c'étais juste pour le paramètre actionEvent.
Autre probleme, comment appeler une servlet avec un bouton ???
tu fais une redirection
ben apparament ya pas moyen avec un bouton
j'ai du passer par un commandLink
Parceque ton command link est en immediate = true par défault contrairement à ton bouton. Tu as un problème dans ton cycle de vie jsf, tu as un problème de validation ou de binding.
Pour en savoir plus ajoutes un h:messages ou utilises le composant facestrace.
le probleme est plus complexe que ça voila ce que je fais ac mon commanLink :
GenerePDF est ma servlet qui affiche mon PDF dans une nouvelle page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <h:outputLink value="GenererPDF" target="_blank"> <f:param name="da" value="#{TestBean.dateAbbatage}" /> <f:param name="ip" value="#{TestBean.indper}" /> <f:param name="nb" value="#{TestBean.nbAbattage}" /> <f:param name="min" value="#{TestBean.poidMin}" /> <f:param name="max" value="#{TestBean.poidMax}" /> <f:param name="moy" value="#{TestBean.poidMoyen}" /> <h:outputText value="Imprimer"/> </h:outputLink>
Etant donné que j'utilise IceFaces, je suis pas mal limité. Impossible de passer par les navigationRules.
servlet :
Enfin bon ça marche pour l'instant c'est l'essentiel
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143 package fr.cmre; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.JasperRunManager; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.xml.JRXmlLoader; /** * Servlet implementation class for Servlet: GenererPDF * */ public class GenererPDF extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#HttpServlet() */ public GenererPDF() { super(); } /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, * HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, * HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { byte[] pdf; String dateAbbatage = null; String indper = null; String nbovin = null; String min = null; String max = null; String moy = null; dateAbbatage = request.getParameter("da"); indper = request.getParameter("ip"); nbovin = request.getParameter("nb"); min = request.getParameter("min"); max = request.getParameter("max"); moy = request.getParameter("moy"); pdf = generePDF(dateAbbatage, indper, nbovin, min, max, moy); response.setContentType("application/pdf"); response.setHeader("Content-disposition", "inline"); response.setContentLength(pdf.length); response.setHeader("Cache-Control", "cache, must-revalidate"); response.setHeader("Pragma", "public"); try { OutputStream out = response.getOutputStream(); out.write(pdf); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public byte[] generePDF(String uneDate, String unIndicePer, String unNb, String unMin, String unMax, String uneMoy) { // - String url = "jdbc:oracle:thin:@obelix:1521:dweb"; String login = "ovitelweb"; String password = "bewletivo"; byte[] pdf = null; Connection connection = null; try { // - Connexion à la base connection = DriverManager.getConnection(url, login, password); // - Chargement et compilation du rapport JasperDesign jasperDesign = JRXmlLoader.load("c:\\classic.jrxml"); JasperReport jasperReport = JasperCompileManager .compileReport(jasperDesign); // - Paramètres à envoyer au rapport Map<String, Integer> parameters = new HashMap<String, Integer>(); Map<String, String> parametersDate = new HashMap<String, String>(); Map<String, String> parametersString = new HashMap<String, String>(); parameters.put("idUtil", Integer.parseInt(unIndicePer)); parametersDate.put("date", uneDate); parameters.put("nbovin", Integer.parseInt(unNb)); parameters.put("min", Integer.parseInt(unMin)); parameters.put("max", Integer.parseInt(unMax)); parametersString.put("moy", uneMoy); // - Execution du rapport pdf = JasperRunManager.runReportToPdf(jasperReport, parameters, connection); return (pdf); } catch (JRException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return (pdf); } }![]()
Partager