2009-01-07 28 views
4

Quelle est la bonne façon de créer un lien hypertexte dans Spring + JSP? Il doit y avoir un meilleur moyen que le simple codage dans la balise <a href="...">. Prenez par exemple une page qui affiche des gens. L'URL est people.htm. Le contrôleur correspondant extrait les personnes de la base de données et effectue un tri des colonnes facultatif. Le JSP pourrait ressembler à:Comment créer un lien hypertexte dans Spring + JSP

<table> 
<tr> 
    <td><a href="people.htm?sort=name">Name</a></td> 
    <td><a href="people.htm?sort=age">Age</a></td> 
    <td><a href="people.htm?sort=address">Address</a></td> 
</tr> 
... 

Cela semble mauvais que l'URL est people.htm dans la JSP hardcoded. Spring devrait automatiquement créer la balise <a> en utilisant l'URL définie dans servlet.xml.

Modifier: Peut-être que je devrais utiliser une forme de ressort.

Répondre

5

La seule chose qui me vient à l'esprit est l'étiquette standard JSTL <c:url>. For example:

<c:url var="thisURL" value="homer.jsp"> 
    <c:param name="iq" value="${homer.iq}"/> 
    <c:param name="checkAgainst" value="marge simpson"/> 
</c:url> 
<a href="<c:out value="${thisURL}"/>">Next</a> 

Maintenant, cela ne vous obtenez la cartographie servlet ou similaires, mais rien ne va. Ce n'est pas quelque chose que vous pouvez vraiment faire par programmation (après tout, une servlet peut et mappe généralement sur une plage d'URL). Mais cela prendra soin de s'échapper pour vous.

3

Je n'ai pas vu ce genre de fonctionnalité au printemps pur (bien que les grails offrent des choses comme ça).

Pour votre cas vous pourriez envisager de supprimer la partie du fichier et en utilisant uniquement la chaîne de requête comme l'attribut href:

<td><a href="?sort=name">Name</a></td> 
<td><a href="?sort=age">Age</a></td> 
<td><a href="?sort=address">Address</a></td> 

Ces liens ajoutez la chaîne de requête à l'élément de chemin de l'URL actuelle.

1

Une meilleure façon de créer un lien est:

<a href="<%=request.getContextPath() %>/people">Name</a> 

<% = request.getContextPath()%> veille à ce que correct URI sera prise en compte.

« sorte » paramètre que vous pouvez obtenir plus avec le champ caché et changer une valeur avec un peu de javascript:

<input type="hidden" name="sort" id="sort" value="name"> 

et méthode de commande devrait ressembler à ceci:

@RequestMapping("/people") 
public String createUser(String sort) { 

    ... 

} 
+0

Votre réponse a aidé. Mon scénario expliquait: j'ai créé un pied de page dans mon application web et j'ai mis un lien vers la page ** Accueil ** où j'avais besoin de conserver le chemin uri avant mon mapping '/ index'. Voici le code: ** A l'intérieur du contrôleur principal ** '@RequestMapping (valeur = { "/", "/ home"}) Chaîne homePage publique (modèle de modèle) {...}' ** Code de pied de page ** 'HOME' – InamTaj

0

Importer cette package dans votre fichier jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

lorsque vous souhaitez rediriger une nouvelle page ou URL puis utiliser par exemple.

<a href='<c:url value="url of next page" />'>Home</a> 
0

Au printemps MVC jsp:

Vous pouvez utiliser:

général Hyperlink:

<a href="/Portfolio/login">Click Here</a> 

Si le passage du contrôleur:

<a href="/Portfolio/${page}">Click Here</a> 

balises Jsp

<c:url var="URL" value="login"> 
<c:param name="param" value="${parameter}"/> 
</c:url> 
<a href="<c:out value="${URL}"/>">Click Here</a> 

it helps .. :)

Questions connexes