如果我有两个网络应用http://www.abc.com/app1
和http://www.abc.com/app2
,如何处理两者之间的导航?
我希望能够使用侧边栏中的菜单中的链接导航到app2 ...
<p:menu>
<p:menuitem outcome="/index" value="Home" icon="ui-icon-home"/>
<p:submenu label="app1">
<p:menuitem outcome="/page1" value="page1" />
<p:menuitem outcome="/page2" value="page2" />
</p:submenu>
<p:submenu label="app2">
<!-- all the links below should point to pages in app2 -->
<p:menuitem outcome="/pageA" value="pageA" />
<p:menuitem outcome="/pageB" value="pageB" />
</p:submenu>
</p:menu>
显然outcome="/pageA"
不起作用,因为它试图在app1中找到一个具有该名称的页面,从而产生404。
我尝试了outcome="/app2/pageA"
和outcome="../app2/pageA"
,但这些都没有。还有什么其他选择?
另外,我应该补充一点,我真的不想对网址"http://www.abc.com/app2/pageA"
进行硬编码,因为主机名会根据我的部署位置而改变。
答案 0 :(得分:2)
你可以通过以下方式实现它,
Managed Bean:
@ManagedBean
@ViewScoped
public class YourBean implements Serializable{
String project_path;
public String getProject_path() {
return project_path;
}
public void setProject_path(String project_path) {
this.project_path = project_path;
}
@PostConstruct
public void init() {
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
project_path = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort();
}
public YourBean() {
}
}
XHTML:
<p:menu>
<p:menuitem outcome="/index" value="Home" icon="ui-icon-home"/>
<p:submenu label="app1">
<p:menuitem url="#{yourBean.project_path}/app1/page1" value="Page1"/>
<p:menuitem url="#{yourBean.project_path}/app1/page2" value="Page2"/>
</p:submenu>
<p:submenu label="app2">
<p:menuitem url="#{yourBean.project_path}/app1/pageA" value="PageA"/>
<p:menuitem url="#{yourBean.project_path}/app1/pageA" value="PageA"/>
</p:submenu>
</p:menu>
答案 1 :(得分:1)
您可以在运行时获取主机名(例如this answer),将其存储在托管bean或其他内容中,这样您就不会对URL进行硬编码,只有当两个应用程序都在相同的情况下才会起作用主机名。