jsf从一个结果到diff viewId的导航
我需要你的帮助! 我有一个jsf应用程序,现在有两个版本——一个用于移动设备,一个用于桌面浏览器。桌面页面位于文件夹/html中,移动页面位于文件夹/html/mobile中。我想要一个结果来决定到底显示哪些页面-从/html还是从/html/mobile。jsf从一个结果到diff viewId的导航,jsf,navigation,Jsf,Navigation,我需要你的帮助! 我有一个jsf应用程序,现在有两个版本——一个用于移动设备,一个用于桌面浏览器。桌面页面位于文件夹/html中,移动页面位于文件夹/html/mobile中。我想要一个结果来决定到底显示哪些页面-从/html还是从/html/mobile。 我创建了会话属性isMobileBrowser,它指示我使用的浏览器 Boolean isMobileBrowser = (Boolean) session.getAttribute("isMobileBrowser"); if (i
我创建了会话属性isMobileBrowser,它指示我使用的浏览器
Boolean isMobileBrowser = (Boolean) session.getAttribute("isMobileBrowser");
if (isMobileBrowser == null) {
Enumeration e = req.getHeaders("user-agent");
while(e.hasMoreElements()) {
String str = e.nextElement().toString().toLowerCase();
if (str.indexOf("mobile") != -1) {
isMobileBrowser = new Boolean(true);
System.out.println("MOBILE BROWSER");
} else {
isMobileBrowser = new Boolean(false);
System.out.println("STANDARD BROWSER");
}
session.setAttribute("isMobileBrowser", isMobileBrowser);
}
}
现在我想要这样的东西:
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>clientadmin</from-outcome>
// if mobile
<to-view-id>/html/mobile/clientadmin.jsf</to-view-id>
// if desktop
<to-view-id>/html/clientadmin.jsf</to-view-id>
</navigation-case>
</navigation-rule>
*
clientadmin
//如果是移动的
/html/mobile/clientadmin.jsf
//如果桌面
/html/clientadmin.jsf
我怎样才能做得更好。我找到了NavigationHandler,但不明白它是如何工作的。我也尝试使用xml中的条件,但我认为它们不起作用(我使用JSF2.0)
任何帮助都将是巨大的!谢谢 如果您使用的是jsf2.0,则可以使用值表达式来表示。 参见JSF2.0规范中的第2.4.2.1章 如果使用Jsf1.2,则必须实现自定义ViewHandler。 看