JSF重定向到具有不同参数的相同URL

时间:2015-01-21 11:29:09

标签: jsf url redirect parameters

我有以下网站结构:

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
但是如果我使用这种方法(在URL中使用“ ../ event / ”),则意味着我必须创建另外两种链接类型,包括新闻和页面的URL。还有我制作的其他项目类型......
有没有办法只放“ itemId = X ”,即只链接值中的新参数值?然后我可以为我的网站上的每个项目类型使用一个菜单模板 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以根据您的使用案例在ApplicationScope或SessionScope中使用List,并在那里添加所有类型。

这样的东西
 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>