【问题标题】:Issue with PrettyFaces 3.32 / JSF 2 / Servlet 3.0PrettyFaces 3.32 / JSF 2 / Servlet 3.0 的问题
【发布时间】:2012-05-17 09:09:23
【问题描述】:

我有一个问题。看起来 PrettyFaces 正在覆盖我的 webservlet url 模式。

我的 pretty-config.xml 的一部分

<url-mapping id="searchClassifiedAdsBeanRewrite">
     <pattern value="/#{prefixDummy}/#{region:searchBean.region}/#{category:searchBean.category}" />
     <view-id value="/searchClassifiedAds.html" />
</url-mapping>

我的 servlet urlPattern 如下

@WebServlet(urlPatterns = {"/images/*", "/images/temp/*"})

现在,每次我有适用于我的漂亮面孔定义的 url 时,我的 webservlet urlpattern 都不会被调用。不是第一个或第二个 url 模式。

如果我没有漂亮的面孔匹配,那么一切正常。 (即使我更改了 #{prefixDummy} 和硬代码,它也不起作用。

我正在使用文件 servlet(实际上它是 BalusC 的一个示例)来显示动态图像!

任何帮助表示赞赏, 谢谢

【问题讨论】:

    标签: jsf servlets prettyfaces


    【解决方案1】:

    PrettyFaces 支持论坛可能是您想从这个问题开始的地方:http://ocpsoft.org/support/forum/prettyfaces-users

    但是既然你在这里问:) 基本上你看到的是预期的行为。 PrettyFaces 将匹配任何入站 Servlet 请求、转发、错误或包含匹配给定模式。如果您的图片 URL 恰好与该模式匹配,那么您的 Pretty URL 映射将匹配这些模式,就像任何其他 URL 一样。

    您需要更严格地限制该模式,使其不会与您的其他 URL 冲突。

    如果包含 Rewrite 核心框架 (http://ocpsoft.org/rewrite/),PrettyFaces 4 将更容易解决这个问题。您将能够匹配一个 URL,同时排除由现有 Servlet 映射的 URL。)

    这已经可以重写了:

    ConfigurationProvider.begin()
    .addRule(Join.path("/{prefixDummy}/{region}/{category}").to()
             .when(Not.any(ServletMapping.includes("/{prefixDummy}/{region}/{category}")))
             .where("region").bindsTo(PhaseBinding.to(El.parameter("searchBean.region")))
             .where("category").bindsTo(PhaseBinding.to(El.parameter("searchBean.category"))))
    

    注意负约束:ServletMapping.includes("/{prefixDummy}/{region}/{category}"),当容器中的 Servlet 可以处理请求时,它会阻止规则匹配。

    【讨论】:

    • 您好林肯,感谢您的快速回复。我不是专家,但我看不出以下模式 /test/{region}/{category} 如何覆盖以下模式 /images/* 和 /images/temp/* 谢谢 :)
    • 如果图片 URL 是:/images/foo/bar.jpg,则模式“/{prefixDummy}/{region}/{category}”将匹配图片。
    • /images/bar.jpg 也不起作用,甚至 /image-hardcoded.jpg 只有 /* 有效:/ 感谢您的回复,我会将其标记为已回答。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2014-06-26
    • 2011-05-31
    • 2011-07-26
    • 2014-12-12
    • 2012-04-13
    • 2016-07-14
    • 2013-12-27
    • 2011-05-04
    相关资源
    最近更新 更多