使用PrettyFaces传递查询字符串

时间:2013-08-16 09:10:05

标签: prettyfaces

我正在使用JSF2和 PrettyFaces 来创建'SEO友好的URL'。
现在,当我想在PrettyFaces创建一个新url之后传递参数时,我遇到了一个问题,那些参数将被删除,我想避免这种情况。

我将用一个例子来解释它:
目前在点击此网址时:
http://www.mysite.com/index.jsf?param1=value1&param2=value2
PrettyFaces 之后我得到了这个网址:
http://www.mysite.com/

但是我希望它是这样的,所以当点击这个网址时:
http://www.mysite.com/index.jsf?param1=value1&param2=value2
PrettyFaces 之后,我会得到这个网址:
http://www.mysite.com/?param1=value1

请注意:我只想传递特定参数。从上面的示例中,只应传递param1

我在'pretty-config.xml'上的配置:

<url-mapping>    
    <pattern>/</pattern>    
     <view-id>/jsp/index.jsf</view-id>    
</url-mapping>

1 个答案:

答案 0 :(得分:1)

我真的很惊讶查询字符串是而不是被保留。除了漂亮的脸,我猜其他东西还在继续。您使用的是什么版本的PRettyFaces?我也猜测这个 是PrettyFaces的问题,这是你正在使用的版本中的一个错误,但我认为这不太可能。

您粘贴的url-mapping应该执行的事情是执行从“/”到“/jsp/index.jsf”的内部转发。它不会执行从“/index.jsf”到“/”的任何客户端重定向;这就是为什么我认为这里有其他的东西在起作用。 (参见代码参考:https://github.com/ocpsoft/rewrite/blob/master/config-prettyfaces/src/main/java/org/ocpsoft/rewrite/prettyfaces/UrlMappingRuleAdaptor.java#L213

关于剥离某些查询参数并留下其他参数,我强烈建议查看Rewrite框架(这是PrettyFaces的新核心),您可以使用它来构建非常自定义的重写规则:http://ocpsoft.org/prettyfaces/http://ocpsoft.org/rewrite/

我希望这会有所帮助。