【问题标题】:How to create hyperlink in Spring + JSP如何在 Spring + JSP 中创建超链接
【发布时间】:2009-01-07 20:12:27
【问题描述】:

在 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 使用 servlet.xml 中定义的 URL 自动构建 &lt;a&gt; 标记。

编辑:也许我应该使用 Spring 表单。

【问题讨论】:

    标签: spring jsp jstl


    【解决方案1】:

    唯一想到的是 JSTL 标准标签&lt;c:url&gt;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)。但这会帮你逃跑。

    【讨论】:

      【解决方案2】:

      我还没有在纯 spring 中看到过这种功能(尽管 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 的路径部分。

      【讨论】:

        【解决方案3】:

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

        希望对你有帮助.. :)

        【讨论】:

          【解决方案4】:

          创建链接的更好方法是:

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

          确保考虑到正确的 URI。

          “排序”参数,你可以用隐藏字段克服并用一点点javascript改变一个值:

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

          控制器方法应该是这样的:

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

          【讨论】:

          • 您的回答有帮助。我的场景解释:我在我的网络应用程序中创建了一个页脚,并在其中放置了一个指向 Home 页面的链接,我需要在我的 /index 映射之前保留路径 uri。这是代码:主控制器内部 @RequestMapping(value={"/", "/home"}) public String homePage(Model model) {...} 页脚代码 &lt;a href="&lt;%=request.getContextPath()%&gt;/home"&gt;HOME&lt;/a&gt;
          【解决方案5】:

          在你的jsp文件中导入这个包

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-13
            • 2013-03-06
            • 2011-04-15
            • 2012-11-07
            相关资源
            最近更新 更多