如何在ADF Essentials中使用Tuckey URL重写?

时间:2014-07-07 08:49:05

标签: url-rewriting oracle-adf

在ADF 11.1.2.4(JSF2.0 -GF 3.1.2)上开发 期待为漂亮的网址实现urlrewrite。 添加到web.xml中:

    <filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
      <param-name>logLevel</param-name>
      <param-value>WARN</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

创建了urlrewrite.xml,例如

<rule>
    <from casesensitive="false">myTest</from>
    <use-context>true</use-context>
    <to>/faces/admin/admin.jspx</to>
</rule>

admin.jspx包含TF。 当我部署项目并请求主机名:9999 / mytest重定向右页(主机名:9999 / faces / admin / admin.jspx)和页面渲染没有问题。但我的实际目标是让供应看不到真正的网址。但我可以在浏览器上看到真正的网址,例如:(... jspx?_adf.ctrl-state = 4avl71cil_1)那么,我错过了什么?顺便说说;当我键入蒙版网址时,它会重定向我的真实页面,因此效果很好。但似乎是浏览器地址栏上的真实网址。如果我只使用'faces'上下文中的html页面,那么urlrewrite就像预期的那样工作。 Thx,brgds

1 个答案:

答案 0 :(得分:1)

由于您有Tucky URL重写过滤器,ADF附带其JSF View Handler,在ADF 12.1.x之前,除非您使用Apache Server重写或Oracle HTTP Server,否则您将无法转发URL,因为ADF内部filter将查找_adf.ctrl-state,如果找不到它,它会将它附加到URL,该URL将显示页面的实际URL。

您可以尝试通过扩展ServletRequest来破解那些_adf.ctrl状态,并在被问及_adf.ctrl-state时提供会话中保存的最后一个值,但我向您保证它对应用程序非常有害。 / p>