1

在使用 PrettyFaces 重写一些 URL 时,我发现自己使用父 url-mappings 进行映射组合。

例如,想象一个 JSF 应用程序,其页面使用 2 个过滤器过滤新闻。搜索时,页面url变成了这样

www.news.com/search.jsf?category=socials&topic=music&page=0

问题是类别和主题是可选参数。我是否被迫为每个组合编写映射,或者有没有办法做这样的事情(忽略不存在的参数并且不添加或忽略路径参数)?

<url-mapping id="searchResultList">
    <pattern value="/search/#{cat/}#{topic/}#{page/}"/>
    <view-id value="/pages/search.jsf"/>
</url-mapping>
4

1 回答 1

3

对于像搜索分页这样的情况,我通常不建议使用路径参数(查询参数在 IMO 中是合适的),但如果你仍然想做这样的事情,那么你可以采取一些潜在的方法之一:

  1. 为每个组合写一个映射。这是最可靠的方法。父映射可用于降低复杂性:

    http://ocpsoft.org/docs/prettyfaces/3.3.2/en-US/html_single/#config.mapping.parents

  2. 编写一个正则表达式配置映射并在自定义操作方法中手动解析动态参数:

    <url-mapping id="searchResultList">
    <pattern value="/search/#{/.*/ cat}"/>
    <view-id value="/pages/search.jsf"/>
    <action>#{ urlParsingBean.parseMyURL}</action>
    </url-mapping>

我希望这是有帮助的。~林肯

于 2012-08-12T06:52:45.823 回答