我正在使用JSF2和 PrettyFaces 来创建'SEO友好的URL'。
现在,当我想在PrettyFaces创建一个新url之后传递参数时,我遇到了一个问题,那些参数将被删除,我想避免这种情况。
我将用一个例子来解释它:
目前在点击此网址时:
http://www.mysite.com/index.jsf?param1=value1¶m2=value2
在 PrettyFaces 之后我得到了这个网址:
http://www.mysite.com/
但是我希望它是这样的,所以当点击这个网址时:
http://www.mysite.com/index.jsf?param1=value1¶m2=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>
答案 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/
我希望这会有所帮助。