2015-01-21 3 views
0

Я имею следующую структуру сайта:
JSF перенаправлять же URL с различными параметрами

web 
|_events 
    |_view.xhtml 
|_news 
    |_view.xhtml 
|_pages 
    |_view.xhtml 
... 


Когда пользователь нажимает на ссылку, чтобы, скажем, события # 4, он будет перенаправлен например http://example.com/events/view.xhtml?itemId=4
На странице event-> view.xhtml У меня есть меню со ссылками на некоторые другие события (как-то связанные с событием, которое в настоящее время просматривается). Предположим, это Событие №1 и Событие №2.
В настоящее время мои ссылки в меню имеют value = "../ event/view.xhtml? ItemId = # {row.id}". Когда он будет нажат, пользователь будет перенаправлен, например. http://example.com/events/view.xhtml?itemId=2
Но если я использую этот подход (с адресом «../event/» в URL-адресе), это означает, что мне нужно создать еще два типа ссылок с URL-адресами для новостей и страниц. А также для каждого другого типа, который я делаю ...
Есть ли способ поставить только «itemId = X», то есть только новое значение параметра в значении ссылки? Тогда я мог бы использовать один шаблон меню для каждого типа элемента на моем сайте.
Спасибо!

ответ

1

Вы можете использовать Список в ApplicationScope или SessionScope в соответствии с вашим прецедентом и добавить туда все типы.

Что-то вроде

public class Type implements Serializable { 
    private String name; 
    private List<Integer> items; 
    //getters and setters 
} 

Managed Bean

public class TestBean { 
     private List<Type> types; 
     @PostConstruct 
     public void init(){ 
      //constructTypesAccordingToSomeLogic(); 
     } 
     //getters and setter 
} 

Просмотр

<ui:repeat value="#{testBean.types}" var="type"> 
     <ui:repeat value="#{type.items}" var="item"> 
      <h:outputLink value="../#{type.name}.xhtml?itemId=#{item}"></h:outpuLink> 
     </ui:repeat> 
</ui:repeat> 
Смежные вопросы