首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用漂亮的脸孔和网页过滤器

使用漂亮的脸孔和网页过滤器
EN

Stack Overflow用户
提问于 2013-03-25 01:14:02
回答 1查看 4.3K关注 0票数 10

使用Tomcat 7- Primefaces 3.4.1 - javax faces 2.1.17 - prettyfaces-jsf2 2 3.3.3

我正确地在我的项目上配置了漂亮的面孔,但是我的网页过滤器没有使用新的urls,这些urls是由漂亮面孔编写的。

下面是一个漂亮的-config.xml示例

代码语言:javascript
复制
<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>

登录(欢迎)和注册页面在“公用”文件夹中,它们的web筛选器是用注释:@WebFilter("/public/*")定义的。

对于“安全”文件夹中的主页(确切地说,文件夹中会有更多的页面),我还定义了一个web筛选器及其注释:@WebFilter("/secure/*)

漂亮的urls运行良好,,但只有当我编写原始urls.时,这些过滤器才能正常工作。

1)如何修复我的网络过滤器?

2)我还想阻止用户输入原始网址。我知道漂亮的面孔完全隐藏了原始的urls,但是有什么方法可以做到吗?

-解决了 --谢谢BalusC

如果使用注释定义筛选器,则可以配置dispatcher设置,如

@WebFilter(urlPatterns = "/public/*",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-25 01:21:18

PrettyFaces像许多URL重写解决方案一样使用RequestDispatcher#forward()将请求转发到所需的目标资源。

Servlet过滤器在没有任何<dispatcher>的情况下映射时,默认情况下只侦听“初始”请求,而不是转发、包含或错误的请求。

因此,当您将web.xml中的另一个servlet筛选器映射到PrettyFaces过滤器之后,默认情况下不会触发它,除非在默认的REQUEST旁边显式地在FORWARD上设置一个servlet过滤器(对于实际不需要执行转发的情况,PrettyFaces应该保留这个过滤器)。

代码语言:javascript
复制
<filter-mapping>
    ...
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

或者,对于在过滤器上使用@WebFilter的情况,使用dispatcherTypes属性:

代码语言:javascript
复制
@WebFilter(..., dispatcherTypes = { REQUEST, FORWARD })

或者,如果所讨论的过滤器没有以任何方式更改请求/响应目标,例如设置字符集、使用Gzip压缩、侦听异常等等,那么您也可以将其放在PrettyFaces 1之前。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15606205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档