[Struts-Layout] construction url dynamique sans paramètre avec <layout:collection>
:salut:
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 :
Citation:
pour une DR :
http://monserveur/DRDICT/FILES/PJ/DR/DR1/DR1_1_file1.jpg
http://monserveur/DRDICT/FILES/PJ/DR/DR1/DR1_2_file2.pdf
Citation:
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
Je 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.
Voici le code source JSP pour afficher mon tableau avec mon lien :
Code:
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> |
Ma collection
Citation:
drListeTravauxFichier
contient des objets de ma classe :
Code:
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;
}
} |
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.
le lien généré est juste et fonctionne avec l'aide d'un copier coller :cfou:
Quand je consulte le code source de la page web, le lien généré à la tête suivante :
Code:
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> |
Ce qui fait que le lien apparait comme chaine de texte, mais pas comme un lien hypertexte :arf:
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.
:help:
Merci d'avance pour vos réponses :king: