在Spring + JSP中创建超链接的正确方法是什么?必须有一种比在<a href="...">标签中编码更好的方法。以一个显示人物的页面为例。网址为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 <a>在JSP中是硬编码的。应该有一种方法让Spring使用servlet.xml中定义的URL自动构建<=>标记。

编辑:也许我应该使用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>

现在这不会让你获得servlet映射等,但什么都不会。这不是你可以用编程方式做的事情(毕竟,servlet可以并且通常映射到一系列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>

这些链接将查询字符串附加到当前网址的路径组件。

创建链接的更好方法是:

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

<!> lt;%= request.getContextPath()%<!> gt;确保将考虑正确的URI。

<!>

QUOT;排序QUOT <!>;参数你可以用隐藏字段来解决,并用一点点javascript改变一个值:

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

控制器方法应如下所示:

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

   ...

}

在jsp中的Spring MVC中

您可以使用:

一般超链接:

<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" %>

当您想要重定向新页面或网址时,请使用例如。

<a href='<c:url value="url of next page" />'>Home</a>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top