如何在Spring + JSP中创建超链接
题
在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>
不隶属于 StackOverflow