在ADF11.1.2.4(JSF2.0URL 3.1.2)上开发,希望实现漂亮urls的-GF重写。添加到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。当我部署项目并请求时,hostname:9999/mytest重定向右侧页面(hostname:9999/faces/admin/admin.jspx),页面呈现没有问题。但我的实际目标是使供应永远看不到真正的url。但是我可以在浏览器上看到真正的url,比如:(...jspx?_adf.ctrl-state=4avl71sey_1)那么,我错过了什么?顺便说一句,当我输入屏蔽的url时,它会重定向我的真实页面,所以它工作得很好。但似乎是浏览器地址栏上的真实url。如果我只在“faces”上下文之外使用html页面,那么urlrewrite就会完全按照预期工作。Thx,brgds
发布于 2014-07-09 16:58:56
因为你有Tucky URL重写过滤器,ADF附带了它的JSF View Handler,在ADF 12.1.x之前,你将无法转发URL,除非你正在使用Apache Server重写或Oracle HTTP Server,因为ADF内部过滤器将查找_adf.ctrl-state,如果没有找到,它会将其附加到URL,这将显示页面的实际URL。
您可以尝试通过扩展ServletRequest来破解这些_adf.ctrl-state,并在询问_adf.ctrl-state时提供保存在会话中的最后一个值,但我向您保证这将对应用程序非常有害。
https://stackoverflow.com/questions/24606509
复制相似问题