如何在JSP中动态生成URL?

问题描述:

我有一个工具(说mytool.com)。当用户登录到工具中时,我想要使用有关用户的信息(如他是哪个组的一部分)来显示一些链接。如何在JSP中动态生成URL?

例如,用户A登录并且我知道用户A将能够在类别111中查看项目“abc”;所以我会在页面上显示一个链接,将用户带到该项目(类似mytool.com/items/111/abc)。

我的问题是如何在JSP中生成这些链接。当用户登录时,我打电话给一个服务以获取他可以查看的类别和项目列表(本例中为111和“abc”)。如何正确地将它转换成JSP中的链接?

附加信息: 我想避免在JSP中使用Java代码。我也使用Spring mvc。根据一些注释,它看起来应该在控制器中生成url并将其放入模型中,然后让JSP读取它。这是否是正确的方法?

+1

它在这一点上只是基本的HTML。 – developerwjk 2014-11-24 21:28:34

+0

只需使用java代码来生成html代码的链接。循环访问您的数据集,并为您想要的每个链接创建一个链接标记。 – brso05 2014-11-24 21:29:23

+0

我应该在原始问题中提到这一点:我想避免在JSP中使用Java代码。我也使用Spring mvc。我应该在控制器中生成url并将其放入模型中,然后让JSP读取它? – 2014-11-24 21:36:33

您可以使用JSTL来实现这一点:如果你

@RequestMapping(value = "/items/{category}/{name}", method=RequestMethod.GET) 
    public String getItem(@PathVariable("category") String category, @PathVariable("name") String name){ 
    String productname= name; 
    String category=category; 
    //Do your stuff 
    } 

柜面:

当调用你的JSP:

List<Product> products=getProductFromDB(); 
    request.setAttribute("products", products);//List of products 

JSP:

<table> 
<c:foreach items="${products}" var="product"> 
    <tr> 
     <td> 
      <a href="${pageContext.request.contextPath}/items/${product.category}/${product.name}">${product.name}</a> 
     <td> 
    </tr> 
</c:foreach> 
</table> 

春季控制器不熟悉JSTL,看看here

+0

这正是我所期待的。谢谢! – 2014-11-25 18:54:28