Seam国际化重定向

时间:2010-01-12 21:02:22

标签: java jsf seam

晚上好。

是否有标准的方法将特定网址重定向/重写到另一个网址?

想象一下,用户访问以下视图:http://www.something.com/us/download.xhtml?id=2

我想从上一个视图设置区域设置并重定向到http://www.something.com/download.xhtml?id=2

<page view-id="/us/download.xhtml*" action="<action to set the locale>"> <navigation> <redirect view-id="#{facesContext.viewRoot.viewId}" /> </navigation> </page>

嗯,基本上,我想设置语言环境(例如:us),传递给viewId /us/download.xhtml并重定向到没有语言环境引用的viewId。

由于

2 个答案:

答案 0 :(得分:1)

使用侦听/*的过滤器,该过滤器从URL中提取区域设置,并将请求转发到没有区域设置前缀的新URL。你真的不应该重定向,带有语言环境的URL会丢失,这对SEO来说非常糟糕,因为你会在同一个GET URL后面提供多个内容,而GET应该是幂等的。它还会使本地化页面无法被标记。只需转发请求。

答案 1 :(得分:1)

您应该考虑使用PrettyFaces URL-rewriting,除了映射<rewrite match="oldurl" substitute="newurl" />等漂亮的网址以替换/login之类的标准网址之外,它们还具有/faces/login.jsf功能,可以让您完成此操作{1}}。

<url-mapping id="store"> <pattern value="/store/" /> <view-id>/faces/shop/store.jsf</view-id> </url-mapping>

重写功能的文档:Reference Guide