ADF通过相同的URL在一个应用程序中访问2个不同的项目(移动浏览器和桌面浏览器)

时间:2014-07-22 06:17:03

标签: mobile browser oracle-adf trinidad

有谁知道如何解决这个问题?这个想法是 - 应用程序包含两个项目,其中一个用于移动浏览器,另一个用于桌面,它们具有通用模型,用户必须根据他使用的设备通过相同的URL访问两个不同的项目。

#{requestContext.agent.type == 'desktop'? 'richmobile': 'mobile'}

这种EL用于根据设备改变蒙皮。据我所知,服务器应该大致相同吗?

1 个答案:

答案 0 :(得分:0)

最初我创建了模型(包含带有核心逻辑的java文件)和TrinidadViewController(包含.jsf页面(使用trinidad组件构建),验证和区域设置包)项目。在我完成添加ADF浏览器项目的任务后(使用ADF面部公开相同的逻辑)。后来我被要求使用一个URL访问这两个项目。

解决方案:

管理重定向操作index.html文件已添加到项目中。如果浏览器获得这种URL - 127.0.0.1:7101/adf-mobile-browser-poc-TrinidadViewController-context-root/,它会自动重定向到index.html页面。 Index.html包含重定向操作代码:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script type="text/javascript">
          function redirect() {
              if (!isMobile()) {
                  window.location="/adf-mobile-browser-poc-big-context-root/faces/first.jspx";
              }else {
                  window.location="/adf-mobile-browser-poc-TrinidadViewController-context-root/faces/first.jsf";
              }
          }

          function isMobile() {
              return (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/iPhone|iPad|iPod/i) || navigator.userAgent.match(/Opera Mini/i) || navigator.userAgent.match(/IEMobile/i))
          };
        </script>
    </head>
    <body onload="redirect()">
    </body>
</html>

isMobile() - 检查当前平台是移动平台还是桌面平台。 Redirect() - 重定向到特定页面。整个事情看起来像:

  1. 访问网址 - 127.0.0.1:7101/adf-mobile-browser-poc-TrinidadViewController-context-root/
  2. 用户访问index.html
  3. 取决于当前设备javascript
    加载特定页面。