【问题标题】:jsf navigation from one outcome to diff viewIdjsf 从一个结果导航到 diff viewId
【发布时间】:2010-10-04 17:46:06
【问题描述】:

我需要你的帮助! 我有一个 jsf 应用程序,现在有 2 个版本 - 一个用于移动设备,一个用于桌面浏览器。桌面页面位于文件夹/html,移动页面位于/html/mobile。我想要一个结果来决定要显示哪些页面 - 来自 /html 或来自 /html/mobile。
我创建会话属性 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>

我怎样才能做得更好。我找到了 NavigationHandler,但不明白它是如何工作的。我也尝试使用 xml 中的条件 - 但我认为它们不起作用(我使用 jsf 2.0)。

任何帮助都会很大!谢谢!

【问题讨论】:

    标签: jsf navigation


    【解决方案1】:

    如果您使用的是 jsf2.0,您可以为 . 见 ch。 JSF 2.0 规范中的 2.4.2.1。

    如果使用 Jsf1.2 那么你必须实现一个自定义 ViewHandler。 见how-to-make-jsf-navigation-rules-more-dynamic

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2013-12-19
      • 1970-01-01
      • 2020-05-21
      • 2013-10-23
      • 2014-08-03
      • 1970-01-01
      相关资源
      最近更新 更多