Tichan Posté 15 Juillet 2004 Posté 15 Juillet 2004 Bonjour, je suis débutante sur les technos Struts et jsp... Je dois réaliser un intranet qui repose sur struts et qui inclut un menu de structure arborescente généré de manière dynamique. En effet, celui ci est constitué de lien disposé sos forme d'arbre et selon le lien sélectionné, la jsp doit faire appelle à une classe Action. Cette classe Action doit se charger de modifier un bean contenant le menu et de le renvoyer à la page jsp. Le probleme est que je n'arrive pas à trouver de moyen pour indiquer à la classe Action le nom du lien qui a été cliké pour modifier le bean en conséquence. (tous les liens sont générés via un <logic:iterate> sur le bean passé via la request.) Je ne sais pas si j'ai été très clair mais si vous avez des idées à me proposer, je suis prenneuse... merci , Tichan
Tizel Posté 15 Juillet 2004 Posté 15 Juillet 2004 Il n'y a qu'un seul moyen de récupérer le lien qui a été cliqué : le champ REFERER dans l'en-tête de ta requete. Le probléme est que certains utilisateurs (pour ne pas dire Firewall) bloquent le referer pour assurer la confidentialité de la communication... (c'est le cas de Norton Firewall par exemple). Va voir du coté de HttpServletRequest.getHeader(String) : http://java.sun.com/j2ee/1.4/docs/api/java...va.lang.String) Tizel
Tichan Posté 16 Juillet 2004 Auteur Posté 16 Juillet 2004 merci , en effet le getHeader() me permet bien de recupere l'url du type : http://localhost:9080/Priame/createMenuAction.do? en effet, travaillant avec Struts, je fais appel à une class Action. Je pense néanmoins que je peux passé le lien cliqué en le concateinant à l'url http://localhost:9080/Priame/createMenuAction.do?link=linkxx (bon c'est pas tres propre mais c'est le seul moyen que je vois pour l'instant) Quelqun peut il me dire comment de peux recupéré l'id du lien cliké et le concatener à l'url sachant que mon code se presente sous la forme ci dessous : <logic:iterate name="menuObjects" id="menuObject"> <tr> <td colspan="2"> <html:link action="/createMenuAction?link="> <bean:write name="menuObject" property="id"/></html:link> </html:link><br> <br> </td> </tr> </logic:iterate>
Tichan Posté 16 Juillet 2004 Auteur Posté 16 Juillet 2004 oups, sachant que le code est incomplet : la valeur du paramètre link doit être égale à l'attribut "id". Merci, Tichan
Tizel Posté 16 Juillet 2004 Posté 16 Juillet 2004 Pourquoi, dans ce cas, ne pas carrément écrire l'adresse du lien avec l'identifiant correspondant derriére ? Je t'avouerais que j'ai un peu de mal avec ton code car ce n'est pas du HTML comme j'ai l'habitude de la manipuler... Tizel
Tichan Posté 16 Juillet 2004 Auteur Posté 16 Juillet 2004 je comprend ta question, en faite comme il s'agit d'une liste de lien récupéré à partir d'un bean, je n'ai pas idée exacte du lien cliqué.. Mais tu peux peut etre m'aider en me disant comment recupérer en jsp la valeur d'une variable html. Je sais pas trop si ca marchera dns mon cas, mais ca ne coute rien d'essayer.... s'agit il d'une commande com ceci ?: //recupere le bean indéxé //et itere dessus <logic:iterate name="menuObjects" id="menuObject"> <tr> <td colspan="2"> //affiche les liens struts de l'objet indexé et associe une action à chacun des liens <html:link action="/createMenuAction?link=<%=id%>"> <bean:write name="menuObject" property="id"/></html:link> </html:link><br> <br> </td> </tr> </logic:iterate>
Tizel Posté 16 Juillet 2004 Posté 16 Juillet 2004 Pour cela, rien de plus simple, consulte l'API : http://java.sun.com/j2ee/1.4/docs/api/ Les méthodes qui te seront utiles sont : ServletRequest.html.getParameterNames() : http://java.sun.com/j2ee/1.4/docs/api/java...arameterNames() Cette méthode te permet de trouver la liste des paramétres qui sont passés juste aprés le ? dans l'URL. Pour récupérer leurs valeurs, utilise getParameter ou getParameterValues : http://java.sun.com/j2ee/1.4/docs/api/java...va.lang.String) ou http://java.sun.com/j2ee/1.4/docs/api/java...va.lang.String) suivant que le paramétre peut prendre plusieurs valeur ou non. Sinon, il y a toujours la méthode getQueryString qui te renvoie la chaine se trouvant aprés le point d'interrogation, mais son intéret est bien maigre si tu utilise les méthodes que je t'ai indiqué plus haut : http://java.sun.com/j2ee/1.4/docs/api/java...etQueryString() Tizel
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant