Je travaille actuellement sur un projet de gestion DR / DICT (application qui permet de gérer les demandes et les réponses pour tout ce qui lié aux travaux sur la voie publique)
La technologie utilisé :
- Serveur web et servlet : JBoss 4.0.5 GA
- Persistance : EJB3
- BDD : Oracle 10g R2
- MVC : Struts 1.3.8 et Struts Layout
- IDE : Eclispe 3.3 et WTP 2.0
La page web, que génère struts, est la même (où se trouve mes liens dynamiques) qui est utilisé pour gérer les DR (demande de renseignement) et les DICT (demande d'intention de commencement de travaux).
mon problème est le suivant :
j'ai besoin de construire une url dynamique pour une balise <layout:link> inclut dans un tag <layout:collection>
Lorsque j'utilise les DR et les DICT, l'application gère les documents joints de la demande.
Ces documents sont stocker sur le disque dur du serveur sous cette forme :
- pour les DR : $ROOT/FILES/PJ/DR/<ID_DR>/nomFichier
- pour les DICT : $ROOT/FILES/PJ/DICT/<ID_DICT>/nomFichier
Donc, pour être concret, lorsque je consulte une demande qui a des pièces jointes, l'url d'accès aux documents ressemble à cela :
pour une DR :
http://monserveur/DRDICT/FILES/PJ/DR/DR1/DR1_1_file1.jpg
http://monserveur/DRDICT/FILES/PJ/DR/DR1/DR1_2_file2.pdfJe n'ai pas réussi à construire cette url avec un tag <layout:link>, donc ce que j'ai fait, c'est que je l'ai construite moi même dans une classe qui me permet de gérer ma liste de fichiers joints de la demande.pour une DICT :
http://monserveur/DRDICT/FILES/PJ/DICT/DICT1/DICT1_1_file1.xml
http://monserveur/DRDICT/FILES/PJ/DICT/DICT1/DICT1_2_file2.doc
Voici le code source JSP pour afficher mon tableau avec mon lien :
Ma collection
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 <layout:collection title="" name="drListeTravauxFichier" styleClass="FORM" id="idDrListeTravauxFichier" sortAction="client" width="325"> <layout:collectionItem title="Consulter" property="lien" /> <layout:collectionItem title="dr.travaux.fichier.nom" property="nomFic" sortable="true" /> <layout:collectionItem title="dr.travaux.fichier.enlever"> <center> <layout:link href="demande.do?reqCode=enleverTravauxFichier" paramId="nom" paramProperty="nomFic" paramName="idDrListeTravauxFichier"> <bean:message key="dr.travaux.fichier.btn.enlever" /> </layout:link> </center> </layout:collectionItem> </layout:collection>contient des objets de ma classedrListeTravauxFichier:Fichier
Donc, je teste tout cela, je n'ai pas de plantage de la part de l'application, par contre, je n'obtiens le résultat qui m'intéresse.
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178 public class Fichier implements Serializable { // variables membre private MessageResources messages = MessageResources.getMessageResources("drdict"); private String type = ""; private String path = ""; private String localPath = ""; private String remotePath = ""; private String nomFic = ""; private String id = ""; private String lien = ""; private HttpServletRequest request; private boolean nouveau = false; private Date date = null; private long taille = 0; private static FichierInterface ficI = null; private static Locator locator = new Locator(); public static String DR = "DR"; public static String RDR = "RDR"; public static String DICT = "DICT"; public static String RDICT = "RDICT"; public static String DOCUMENT = "DOCUMENT"; public static String SUIVIE = "SUIVIE"; public static String PJ = "PJ"; public static String TEMPLATE = "TEMPLATE"; // constructeur public Fichier(HttpServletRequest hRequest, String sPath, String sType, String sNomFic, String sId, boolean bNew) { path = sPath; type = sType; nomFic = sNomFic; id = sId; localPath = messages.getMessage("files.local.root"); remotePath = messages.getMessage("files.remote.root"); nouveau = bNew; request = hRequest; } ..... public String genereLien() { String sLien = "<a href=\"" + remotePath + path + "/" + type + "/" + nomFic + "\">"; sLien += "<img src=\"" + request.getContextPath() + "/config/createlink.gif\" border=\"0\">"; sLien += "</a>"; return sLien; } /************************************************************************/ // getter / setter public String getType() { return type; } public void setType(String type) { this.type = type; } /************************************************************************/ public String getPath() { return path; } public void setPath(String path) { this.path = path; } /************************************************************************/ public String getLocalPath() { return localPath; } public void setLocalPath(String localPath) { this.localPath = localPath; } /************************************************************************/ public String getRemotePath() { return remotePath; } public void setRemotePath(String remotePath) { this.remotePath = remotePath; } /************************************************************************/ public String getNomFic() { return nomFic; } public void setNomFic(String nomFic) { this.nomFic = nomFic; } /************************************************************************/ public String getId() { return id; } public void setId(String id) { this.id = id; } /************************************************************************/ public boolean isNouveau() { return nouveau; } public void setNew(boolean nouveau) { this.nouveau = nouveau; } /************************************************************************/ public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } /************************************************************************/ public long getTaille() { return taille; } public void setTaille(long taille) { this.taille = taille; } /************************************************************************/ public void setLien(String lien) { this.lien = lien; } public String getLien() { lien = this.genereLien(); return lien; } /************************************************************************/ public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } }
le lien généré est juste et fonctionne avec l'aide d'un copier coller
Quand je consulte le code source de la page web, le lien généré à la tête suivante :
Ce qui fait que le lien apparait comme chaine de texte, mais pas comme un lien hypertexte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <td class="FORM"><div id="t7l1c0"><a href="/DRDICT/FILES//PJ/DR/DR2007-1_1_web.rar"><img src="/DRDICT/config/createlink.gif" border="0"></a></div></td>
Donc si quelqu'un peut m'aider pour :
- faire en sorte que ma chaine soit interprêter comme lien hypertexte
- ou comment le faire avec le tag <layout:link>
- ou une autre soluce, je suis preneur.
Merci d'avance pour vos réponses![]()
Partager