Как создать гиперссылку в Spring + JSP
Вопрос
Как правильно создать гиперссылку в Spring+JSP?Должен быть лучший способ, чем просто кодирование в <a href="...">
ярлык.Возьмем, к примеру, страницу, на которой отображаются люди.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>
...
Это кажется плохим, поскольку URL-адрес people.htm
жестко закодирован в JSP.Должен быть способ заставить Spring автоматически создавать <a>
тег, используя URL-адрес, определенный в servlet.xml
.
Редактировать:Возможно, мне следует использовать форму Spring.
Решение
Единственное, что приходит на ум, - это стандартный тег JSTL <c:url>
. Например, :
<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>
Теперь это не даст вам отображение сервлета или тому подобное, но ничего не получится. Это не то, что вы действительно могли бы сделать программно (в конце концов, сервлет может и обычно сопоставляет диапазон URL-адресов). Но это поможет вам сбежать.
Другие советы
Я не видел такой функциональности в чистой весне (хотя 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.
Лучший способ создать ссылку:
<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) {
...
}
В 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>
Надеюсь, это поможет ..:)
Импортируйте этот пакет в ваш файл JSP
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
если вы хотите перенаправить новую страницу или URL, используйте, например,
<a href='<c:url value="url of next page" />'>Home</a>