JSF 重定向到具有不同参数的相同 URL
JSF redirect to same URL with different parameters
我的站点结构如下:
web
|_events
|_view.xhtml
|_news
|_view.xhtml
|_pages
|_view.xhtml
...
当用户单击 link 时,比方说,事件 #4,他将被重定向到例如http://example.com/events/view.xhtml?itemId=4
在 event->view.xhtml 页面我有一个菜单 links 到一些其他事件(某种程度上与当前查看的事件)。假设这些是 Event #1 和 Event #2.
目前我的菜单 link 有 value="../event/view.xhtml?itemId=#{row.id}"。单击后,用户将被重定向到例如http://example.com/events/view.xhtml?itemId=2
但是如果我使用这种方法(在 URL 中使用“../event/”),这意味着我必须再创建两个 link 类型, URLs 用于新闻和页面。还有我制作的所有其他项目类型...
有什么方法可以只放置“itemId=X”,即在 link 值中只放置新参数值吗?然后我可以为我网站上的每种项目类型使用一个菜单模板。
谢谢!
您可以根据您的用例在 ApplicationScope 或 SessionScope 中使用 List 并在其中添加所有类型。
类似
public class Type implements Serializable {
private String name;
private List<Integer> items;
//getters and setters
}
托管 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>
我的站点结构如下:
web
|_events
|_view.xhtml
|_news
|_view.xhtml
|_pages
|_view.xhtml
...
当用户单击 link 时,比方说,事件 #4,他将被重定向到例如http://example.com/events/view.xhtml?itemId=4
在 event->view.xhtml 页面我有一个菜单 links 到一些其他事件(某种程度上与当前查看的事件)。假设这些是 Event #1 和 Event #2.
目前我的菜单 link 有 value="../event/view.xhtml?itemId=#{row.id}"。单击后,用户将被重定向到例如http://example.com/events/view.xhtml?itemId=2
但是如果我使用这种方法(在 URL 中使用“../event/”),这意味着我必须再创建两个 link 类型, URLs 用于新闻和页面。还有我制作的所有其他项目类型...
有什么方法可以只放置“itemId=X”,即在 link 值中只放置新参数值吗?然后我可以为我网站上的每种项目类型使用一个菜单模板。
谢谢!
您可以根据您的用例在 ApplicationScope 或 SessionScope 中使用 List 并在其中添加所有类型。
类似
public class Type implements Serializable {
private String name;
private List<Integer> items;
//getters and setters
}
托管 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>