Вы можете использовать встроенную перезапись URL Seam, или, если вы хотите большей гибкости в правилах перезаписи, вы можете использовать UrlRewriteFilter из http://tuckey.org/urlrewrite/. Примеры обоих ниже:
Встроенное переписывание шва (в любом случае этот пробник использует фильтр под тент)
Сначала включите перезапись URL в components.xml файле
<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 в свой проект, которую вы можете взять отсюда
http://tuckey.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? Категория = (. ) и подкатегорию = (. ) и суб-суб-категории = (. *) $
/ Главная / $ 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>
Здесь находится документация по шву - Документация по шву
Tucky UrlRewriteFilter doco здесь - Tuckey RewriteFilter doco