2014-11-24 11 views
3

У меня есть инструмент (скажем, mytool.com). Когда пользователь входит в инструмент, я хочу использовать информацию о пользователе (например, какие группы он является частью) для отображения некоторых ссылок.Как генерировать URL-адреса динамически в JSP?

Например, пользователь A входит в систему, и я знаю, что пользователь A сможет просматривать элемент «abc» в категории 111; поэтому я покажу ссылку на странице, которая приведет пользователя к этому элементу (что-то вроде mytool.com/items/111/abc).

Мой вопрос: как я могу сгенерировать эти ссылки в JSP. Когда пользователь входит в систему, я вызываю службу, чтобы получить список категорий и элементов, которые он может просматривать (111 и «abc» в этом случае). Как правильно перевести это в ссылки в JSP?

Дополнительная информация: Я хочу избежать использования Java-кода в JSP. Я также использую Spring mvc. Основываясь на некоторых комментариях, похоже, что я должен сгенерировать url в контроллере и поместить его в модель, а затем прочитать JSP. Это правильный способ обойти это?

+1

Его просто базовый HTML в этом пункте. – developerwjk

+0

Просто используйте java-код для генерации HTML-кода ссылок. Прокрутите свой набор данных и создайте тег ссылки для каждой требуемой ссылки. – brso05

+0

Я должен был упомянуть об этом в оригинальном вопросе: я хочу избежать использования Java-кода в JSP. Я также использую Spring mvc. Должен ли я генерировать URL-адрес контроллера и помещать его в модель, а затем читать JSP? –

ответ

4

Вы можете использовать JSTL для достижения этого:

Когда звонит 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> 

Spring Controller:

@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 
    } 

Incase если вы не знакомы с JSTL, взгляните на here.

+0

Это именно то, что я искал. Спасибо! –

Смежные вопросы