在使用PrettyFaces重写某些URL时,我发现自己使用父url-mappings进行映射组合。
例如,假设一个JSF应用程序的页面可以过滤新闻,例如2个过滤器。在搜索时,页面网址就像这样
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>
答案 0 :(得分:3)
对于像搜索分页这样的情况,我通常不建议使用路径参数(查询参数在这里适用于IMO),但如果您仍想做这样的事情,那么您可以采取以下几种可能的方法之一:
为每个组合写一个映射。这是最可靠的方法。父映射可用于降低复杂性:
http://ocpsoft.org/docs/prettyfaces/3.3.2/en-US/html_single/#config.mapping.parents
编写正则表达式配置的映射并手动解析动态参数:
&lt; url-mapping id =“searchResultList”&gt;
&lt; pattern value =“/ search /#{/.*/ cat}”/&gt;
&lt; view-id value =“/ pages / search.jsf”/&gt;
&lt;作用&GT;#{urlParsingBean.parseMyURL}&LT; /作用&gt;
&LT; / URL映射&GT;
我希望这会有所帮助。 〜林肯