oko*_*oko 10 jsf primefaces jsf-2 prettyfaces
使用Tomcat 7 --- Primefaces 3.4.1 --- javax面2.1.17 --- prettyfaces-jsf2 3.3.3
我正确地在我的项目上配置了漂亮的面孔,但是我的网页过滤器没有使用由漂亮的面孔编写的新网址.
这是一个示例pretty-config.xml
<url-mapping id="home">
<pattern value="/home"/>
<view-id value="/secure/homepage.xhtml"/>
</url-mapping>
<url-mapping id="register">
<pattern value="/register"/>
<view-id value="/public/register.xhtml"/>
</url-mapping>
<url-mapping id="welcome">
<pattern value="/"/>
<view-id value="/public/welcome.xhtml"/>
</url-mapping>
<url-mapping id="profile">
<pattern value="/profile/#{userId}"/>
<view-id value="/profile.xhtml"/>
</url-mapping>
Run Code Online (Sandbox Code Playgroud)
登录(欢迎)和注册页面位于"公共"文件夹中,其Web过滤器使用注释定义:@WebFilter("/ public/*")
对于我在"安全"文件夹中的主页(确切地说文件夹中会有更多页面),我还定义了一个Web过滤器及其注释:@WebFilter("/ secure/*)
漂亮的网址工作正常,但这些过滤器只在我写原始网址时才有效.
1)我如何修复我的网络过滤器?
2)我还想阻止用户输入原始网址.我知道漂亮的面孔完全隐藏了原始网址但是有办法吗?
- 已解决 - 感谢BalusC
如果您使用注释定义了过滤器,则可以配置调度程序设置,例如
@WebFilter(URL模式= "/公共/*", dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD} )
Bal*_*usC 13
PrettyFaces使用许多URL重写解决方案RequestDispatcher#forward()将请求转发到所需的目标资源.
Servlet过滤器在没有任何映射时<dispatcher>,默认只在"初始"请求上进行侦听,而不是在转发,包含或错误请求上进行侦听.
因此,当您在PrettyFaces web.xml 之后映射另一个servlet过滤器时,默认情况下它不会被触发,除非您在默认值旁边明确设置了一个<dispatcher>on (您应该保留这个,以便PrettyFaces实际上不需要执行前进).FORWARDREQUEST
<filter-mapping>
...
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
或者,对于您在@WebFilter过滤器上使用的情况,请使用以下dispatcherTypes属性:
@WebFilter(..., dispatcherTypes = { REQUEST, FORWARD })
Run Code Online (Sandbox Code Playgroud)
另外,如果有问题的过滤器不改变请求/响应目标以任何方式,例如,设置字符集,使用gzip压缩,监听异常,等等,那么你也可以只是把它之前的PrettyFaces之一.
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |