您可以使用 Seam 的内置 URL 重写,或者如果您希望重写规则更灵活,您可以使用来自http://tukey.org/urlrewrite/的 UrlRewriteFilter 。以下两者的示例:
Seam 的内置重写(无论如何,它可能会使用封面下的 tukey 过滤器)
首先在components.xml文件中开启 url 重写
<web:rewrite-filter view-mapping="*.seam"/>
接下来,将重写规则添加到pages.xml文件中
<page view-id="/home.xhtml">
<rewrite pattern="/home/{category}/{sub-category}/{sub-sub-category}" />
</page>
在这种情况下,传入的 url 用作
/home/vehicles/cars/fords
将被视为请求
/home.seam?category=vehicles&sub-category=cars&sub-sub-category=fords
同样,如果页面具有可用的命名请求参数,则出站 url 将被转换。
或者您可以按如下方式使用 Tucky UrlRewriteFilter
将 Tuckey UrlRewriteFilter jar 添加到您可以从这里获取的项目中
http://tukey.org/urlrewrite/
接下来添加过滤器您的web.xml文件
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
最后将一个名为urlrewrite.xml的文件添加到您的 WEB-INF 目录中。该文件将定义您的重写规则。您可能希望对正则表达式有所了解。该文件应如下所示
^/home.seam?category=(. )&sub-category=(. )&sub-sub-category=(.*)$ /home/$1/$2/$3
<rule match-type="wildcard">
<from>/home\/$1\/$2\/$3</from>
<to type="redirect">/home.seam?category=$1&sub-category=$2&sub-sub-category=$3</to>
</rule>
Seam doco 在这里 - Seam 文档
Tucky UrlRewriteFilter 文档在这里 - Tuckey RewriteFilter 文档