Bonjour à tous,
Je me permet de venir vers vous car je tourne un peu en rond pour l'instant.
J'ai implémenter displaytag dans ma page qui est garni avec ma requeste sql sans aucune problème.
mais le problème réside dans le fait que je veux modifier le texte via un décorateur.
En effet dans ma table j'ai des url : http://www.monurl.be et je voudrais que toute ces url devienne "Détail" et là j'ai un code d'erreur
j'ai regarder le tuto je ne comprend pas j'ai la même chose, ça fait deux semaine que je look le web mais même résultat.
Est ce que vous pouvez m'aider ?
voici la page jsp :
situé : WebContent/jsp/listJeux.jsp
voici la page du décorateur:
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 <?xml version="1.0" encoding="ISO-8859-1" ?> <%@page import="be.kiojeux.dao.jeux.JeuxMySqlImpl"%> <%@page import="java.util.List"%> <%@ taglib uri="http://displaytag.sf.net" prefix="display" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Kio Jeux</title> <meta name="Description" content="Phrases pertinentes" /> <meta name="Keywords" content="kiojeux, contact, jeux, société" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="language" content="french, FR, francais" /> <meta http-equiv="content-language" content="fr" /> <meta name="generator" content="Eclipse" /> <meta name="identifier-url" content="http://www.kiojeux.be" /> <meta name="publisher" content="kiojeux.be" /> <meta name="author" content="Renaud Diana, Rudy Lemaitre" /> <meta name="rights" content="Tous droits réserver Kio Jeux" /> <meta name="audience" content="all" /> <meta name="distribution" content="global" /> <link rel="stylesheet" media="screen" type="text/css" href="jspf/style/global.css" /> <link rel="stylesheet" media="screen" type="text/css" href="../jspf/style/global.css" /> <link rel="stylesheet" media="screen" type="text/css" href="jspf/style/jeux.css" /> <link rel="stylesheet" media="screen" type="text/css" href="../jspf/style/jeux.css" /> </head> <body> <jsp:include page="/jspf/header.jspf"></jsp:include> <div id="corps"> <% request.setAttribute( "listJeux", new JeuxMySqlImpl().returnAllListJeux() ); %> <display:table id="tabJeux" name="listJeux" defaultsort="1" defaultorder = "ascending" pagesize="8" export="true" > <display:column property="denomination" title="Nom jeux" sortable="true" sortName="denomination"/> <display:column property="description" title="Description" /> <display:column property="Mylink" title="Détail" decorator="be.kiojeux.model.listeJeuxDecorator.MyDecorator" /> <display:column property="ageMin" title="Age Min" sortable="true" sortName="ageMin"/> <display:column property="joueursMin" title="Joueur Min" sortable="true" sortName="ageMin"/> <display:column property="joueursMax" title="Joueur Max" sortable="true" sortName="joueursMax"/> <display:column property="duree" title="Durée jeu" sortable="true" sortName="duree"/> </display:table> </div> <jsp:include page="/jspf/footer.jspf"></jsp:include> </body> </html>
situé : src/be.kiojeux.model.listeJeuxDecorator/MyDecorator.java
voici la page du bean :
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 /** * */ package be.kiojeux.model.listeJeuxDecorator; import org.apache.log4j.Logger; import org.displaytag.decorator.TableDecorator; import be.kiojeux.bean.BeanJeux; import be.kiojeux.dao.jeux.JeuxMySqlImpl; /** * @author Lemaitre Rudy * */ public class MyDecorator extends TableDecorator{ /** * <p> * Logger de la Class * </p> */ private static final Logger log = Logger.getLogger(MyDecorator.class); /** * Classe qui permet de mettre en forme le tableau de la lib displayTag */ public MyDecorator() { super(); } /** * Classe permet de récupérer de displaytag la colonne reprenant les url des jeux * la passe dans un String et la renvoie dans displatag pour affichier "Detail" au lieu du liens en dure de l'url * @return String */ public String getMylink(){ Object urlJeux = getCurrentRowObject(); log.debug("retour url"+urlJeux ); String urlDetail = ((BeanJeux) urlJeux).getUrljeux(); log.debug("retour url"+urlDetail ); return "<a href="+urlDetail+"\">Détail</a>"; } }
situé : src/be.kiojeux.bean/BeanJeux.java
voici la page du DAO :
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 /** * */ package be.kiojeux.bean; /** * @author Rudy Lemaitre * JavaBean concernant la table jeux * */ public class BeanJeux { int idJeu; int idTresor; String denomination; String description; int ageMin; int joueursMin; int joueursMax; int duree; int reservation; String urljeux; String urlimg; /** * @return the urljeux */ public String getUrljeux() { return urljeux; } /** * @param urljeux the urljeux to set */ public void setUrljeux(String urljeux) { this.urljeux = urljeux; } /** * @return the urlimg */ public String getUrlimg() { return urlimg; } /** * @param urlimg the urlimg to set */ public void setUrlimg(String urlimg) { this.urlimg = urlimg; } /** * @return the idJeu */ public int getIdJeu() { return idJeu; } /** * @param idJeu the idJeu to set */ public void setIdJeu(int idJeu) { this.idJeu = idJeu; } /** * @return the idTresor */ public int getIdTresor() { return idTresor; } /** * @param idTresor the idTresor to set */ public void setIdTresor(int idTresor) { this.idTresor = idTresor; } /** * @return the denomination */ public String getDenomination() { return denomination; } /** * @param denomination the denomination to set */ public void setDenomination(String denomination) { this.denomination = denomination; } /** * @return the description */ public String getDescription() { return description; } /** * @param description the description to set */ public void setDescription(String description) { this.description = description; } /** * @return the ageMin */ public int getAgeMin() { return ageMin; } /** * @param ageMin the ageMin to set */ public void setAgeMin(int ageMin) { this.ageMin = ageMin; } /** * @return the joueursMin */ public int getJoueursMin() { return joueursMin; } /** * @param joueursMin the joueursMin to set */ public void setJoueursMin(int joueursMin) { this.joueursMin = joueursMin; } /** * @return the joueursMax */ public int getJoueursMax() { return joueursMax; } /** * @param joueursMax the joueursMax to set */ public void setJoueursMax(int joueursMax) { this.joueursMax = joueursMax; } /** * @return the duree */ public int getDuree() { return duree; } /** * @param duree the duree to set */ public void setDuree(int duree) { this.duree = duree; } /** * @return the reservation */ public int getReservation() { return reservation; } /** * @param reservation the reservation to set */ public void setReservation(int reservation) { this.reservation = reservation; } }
Situé: src/be.kiojeux.dao.jeux/JeuxMySqlImpl.java
et voici la page d'erreur:
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 /** * */ package be.kiojeux.dao.jeux; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import be.kiojeux.dao.connection.DbConnection; import be.kiojeux.bean.BeanJeux; /** * @author Rudy Lemaitre * Classe DAO communicant avec la table Jeux * */ public class JeuxMySqlImpl implements JeuxDAO { private List<BeanJeux> listReturn; private BeanJeux listJeux; /** * Constructeur */ public JeuxMySqlImpl() { super(); } /** * <p> * Logger de la Class * </p> */ private static final Logger log = Logger.getLogger(JeuxMySqlImpl.class); /** * @author Rudy Lemaitre * Méthode permettant de renvoyer une list de jeux disponible * @return List */ public List<BeanJeux> returnAllListJeux() { listReturn = new ArrayList<BeanJeux>(); ResultSet rs = null; CallableStatement callStmt = null; // Etablissement de la connection et chargement de la procédure dans le // callableStatement try { callStmt = DbConnection.getInstance().prepareCall( "call ReturnAllJeux()"); log.debug("Chargement de la procédure ReturnAllJeux : Ok"); callStmt.execute(); log.debug("Exécution de la procédure terminée et valide"); // assignation du résultat de retoure de la procédure dans un // résultset rs = callStmt.getResultSet(); // boucle du résultset pour récupération des données dans une // arraylist while (rs.next()) { listJeux = new BeanJeux(); listJeux.setDenomination(rs.getString(1)); listJeux.setDescription(rs.getString(2)); listJeux.setAgeMin(rs.getInt(3)); listJeux.setJoueursMin(rs.getInt(4)); listJeux.setJoueursMax(rs.getInt(5)); listJeux.setDuree(rs.getInt(6)); listJeux.setUrljeux(rs.getString(7)); listReturn.add(listJeux); } DbConnection.closeAll(rs, callStmt); DbConnection.closeConnection(); } catch (SQLException e) { log.error("Procédure ReturnAllJeux non exécutée"); System.out.println(e); } return listReturn; } }
j'espère vraiment que vous allez pouvoir m'aider
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 2011-12-05 11:58:17 DEBUG [DbConnection] Initialisation du context de connexion 2011-12-05 11:58:17 DEBUG [DbConnection] Chargement du context de connexion dans le DataSource 2011-12-05 11:58:17 DEBUG [DbConnection] Connexion établie 2011-12-05 11:58:17 DEBUG [JeuxMySqlImpl] Chargement de la procédure ReturnAllJeux : Ok 2011-12-05 11:58:17 DEBUG [JeuxMySqlImpl] Exécution de la procédure terminée et valide 2011-12-05 11:58:17 DEBUG [DbConnection] Fermeture du ResultSet en cour ... 2011-12-05 11:58:17 DEBUG [DbConnection] ResultSet fermer 2011-12-05 11:58:17 DEBUG [DbConnection] Fermeture du CallableStatement en cour ... 2011-12-05 11:58:17 DEBUG [DbConnection] CallableStatement fermer 2011-12-05 11:58:17 DEBUG [DbConnection] Fermeture de la connexion à la db terminée 2011-12-05 11:58:17 INFO [ExportViewFactory] Initializing ExportViewFactory with type={pdf,excel,rtf} 2011-12-05 11:58:17 DEBUG [ExportViewFactory] ExportView for pdf media added: org.displaytag.export.DefaultPdfExportView 2011-12-05 11:58:17 DEBUG [ExportViewFactory] ExportView for excel media added: org.displaytag.export.ExcelView 2011-12-05 11:58:17 DEBUG [ExportViewFactory] ExportView for rtf media added: org.displaytag.export.DefaultRtfExportView 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] doStartTag called 2011-12-05 11:58:17 INFO [TableProperties] No LocaleResolver configured. 2011-12-05 11:58:17 DEBUG [LookupUtil] getBeanValue - bean: {listJeux} 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] setting media [html] in this.pageContext 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] doIteration called 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] setting attribute "tabJeux" in pageContext 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] first iteration=true (row number=1) 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] addColumn HeaderCell[columnNumber=0,title=Nom jeux,beanPropertyName=denomination] 2011-12-05 11:58:17 DEBUG [ColumnTag] columnTag.addHeaderToTable() :: first iteration - adding header HeaderCell[columnNumber=0,title=Nom jeux,beanPropertyName=denomination] 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] first iteration=true (row number=1) 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] addColumn HeaderCell[columnNumber=0,title=Description,beanPropertyName=description] 2011-12-05 11:58:17 DEBUG [ColumnTag] columnTag.addHeaderToTable() :: first iteration - adding header HeaderCell[columnNumber=1,title=Description,beanPropertyName=description] 2011-12-05 11:58:17 DEBUG [TableTag] [tabJeux] first iteration=true (row number=1) 2011-12-05 11:58:17 ERROR [DefaultDecoratorFactory] Exception: [.DefaultDecoratorFactory] Unable to load be.kiojeux.model.listeJeuxDecorator.MyDecorator due to a java.lang.ClassCastException exception Cause: be.kiojeux.model.listeJeuxDecorator.MyDecorator java.lang.ClassCastException: be.kiojeux.model.listeJeuxDecorator.MyDecorator at org.displaytag.decorator.DefaultDecoratorFactory.loadColumnDecorator(DefaultDecoratorFactory.java:157) at org.displaytag.tags.ColumnTag.addHeaderToTable(ColumnTag.java:705) at org.displaytag.tags.ColumnTag.doEndTag(ColumnTag.java:622) at org.apache.jsp.jsp.listJeux_jsp._jspx_meth_display_005fcolumn_005f2(listJeux_jsp.java:273) at org.apache.jsp.jsp.listJeux_jsp._jspService(listJeux_jsp.java:155) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 05-déc.-2011 11:58:17 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet [jsp] in context with path [/KioJeux] threw exception [javax.servlet.ServletException: org.displaytag.exception.DecoratorInstantiationException: Unable to load be.kiojeux.model.listeJeuxDecorator.MyDecorator due to a java.lang.ClassCastException exception] with root cause java.lang.ClassCastException: be.kiojeux.model.listeJeuxDecorator.MyDecorator at org.displaytag.decorator.DefaultDecoratorFactory.loadColumnDecorator(DefaultDecoratorFactory.java:157) at org.displaytag.tags.ColumnTag.addHeaderToTable(ColumnTag.java:705) at org.displaytag.tags.ColumnTag.doEndTag(ColumnTag.java:622) at org.apache.jsp.jsp.listJeux_jsp._jspx_meth_display_005fcolumn_005f2(listJeux_jsp.java:273) at org.apache.jsp.jsp.listJeux_jsp._jspService(listJeux_jsp.java:155) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
encore merci à tous,
Rudy
Partager