Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create hyperlink in Spring + JSP

Tags:

spring

jsp

jstl

What's the proper way to create a hyperlink in Spring+JSP? There must be a better way than just coding in the <a href="..."> tag. Take for example a page that displays people. The URL is people.htm. The corresponding controller gets people from the database and performs optional column sorting. The JSP might look like:

<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>
...

This seems bad as the URL people.htm is hardcoded in the JSP. There should be a way to have Spring automatically build the <a> tag using the URL defined in servlet.xml.

Edit: Maybe I should be using a Spring form.

like image 954
Steve Kuo Avatar asked Jan 07 '09 20:01

Steve Kuo


2 Answers

The only thing that comes to mind is the JSTL standard tag <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>

Now this won't get you servlet mapping or the like but nothing will. It's not something you could really do programmatically (after all, a servlet can and usually does map to a range of URLs). But this will take care of escaping for you.

like image 60
cletus Avatar answered Oct 04 '22 06:10

cletus


I haven't seen this kind of functionality in pure spring (although grails offers things like that).

For your specific case you might consider removing the file part and only using the query string as the href attribute:

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

These links append the query string to the path component of the current url.

like image 33
Ole Avatar answered Oct 04 '22 04:10

Ole