2009-01-07 97 views
4

在Spring + JSP中創建超鏈接的正確方法是什麼?必須有一個比<a href="...">標籤編碼更好的方法。以一個顯示人員的頁面爲例。網址是people.htm。相應的控制器從數據庫中獲取人員並執行可選的列排序。該JSP可能看起來像:如何在Spring + JSP中創建超鏈接

作爲URL people.htm在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> 
... 

這似乎不好。應該有一種方法讓Spring使用servlet.xml中定義的URL自動生成<a>標籤。

編輯:也許我應該使用Spring窗體。

回答

5

唯一想到的是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> 

現在,這不會讓你的servlet映射或類似,但什麼都不會。這不是你可以真正以編程方式做的事情(畢竟,一個servlet可以並且通常映射到一系列的URL)。但這會照顧你逃跑。

3

我還沒有見過純彈簧中的這種功能(儘管grails提供這樣的功能)。

針對您的特殊情況下,你可能會考慮刪除該文件的一部分,僅使用查詢字符串作爲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> 

這些鏈接查詢字符串附加到當前URL的路徑組件。

1

最好創建鏈接的方法是:

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

<%= request.getContextPath()%>可確保正確的URI將被考慮在內。

「排序」參數,您可以用隱藏字段克服和改變一個值與JavaScript的一點點:

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

和控制器的方法應該是這樣的:

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

    ... 

} 
+0

你的回答有幫助。我的場景解釋了:我在我的網絡應用程序中創建了一個頁腳,並且我在** Home **頁面中添加了一個鏈接,在我的`/ index`映射之前需要保留路徑uri。 這裏是代碼: **內部主控制器** `@RequestMapping(值= { 「/」, 「/家」}) 公共字符串的主頁(型號模型){...}` **頁腳代碼** `HOME` – InamTaj 2015-11-26 17:01:06

0

導入此打包在你的jsp文件中

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

當你想重定向新的頁面或url用於例如。

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

在Spring MVC中的JSP:

您可以使用:

一般超鏈接:

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

如果從控制器傳遞:

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

JSP標籤

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

希望它有助於.. :)