Как указать шаблон перезаписи в pages.xml - PullRequest
5 голосов
/ 07 января 2011

У меня много файлов xhtml в нескольких папках. Я хочу переписать URL-адрес как

от http://localhost:8080/folder1/file1.seam до http://localhost:8080/folder1/file1

В file1.page.xml я дал

<rewrite pattern="/folder1/file1" />

Вышеуказанное предоставило мне правильную схему. Но у меня много файлов, и я не хочу указывать этот шаблон перезаписи в каждом файле page.xml. Есть ли способ указать это в pages.xml?

EDIT:

http://localhost:8080/folder2/file2.seam to http://localhost:8080/folder2/file2
http://localhost:8080/folder3/file3.seam to http://localhost:8080/folder3/file3

Больше примеров моего перевода

Ответы [ 2 ]

8 голосов
/ 11 января 2011
  • Перезапись происходит на основе шаблонов перезаписи, найденных для представлений в pages.xml

  • Перезапись URL-адреса шва выполняет перезапись как входящего, так и исходящего URL-адреса на основе одного и того же шаблона

Пример:

<page view-id="/home.xhtml">
  <rewrite pattern="/home" />
</page>
  • любой входящий запрос для / home будет отправлен на /home.xhtml
  • любой сгенерированной ссылке, которая обычновместо этого точка /home.seam будет перезаписана как /home
  • Шаблоны перезаписи соответствуют только части URL-адреса перед параметрами запроса

  • Оба они будутбыть согласованным

    • /home.seam?conversationId=13
    • /home.seam?color=red

Правила перезаписи могут учитывать эти параметры запроса

<page view-id="/home.xhtml">
  <rewrite pattern="/home/{color}" />
  <rewrite pattern="/home" />
</page>

Входящий запрос для /home/red будет обслуживаться так, как если бы это был запрос для /home.seam?color=red

Если цвет является параметром страницы, исходящий URL-адрес /home.seam?color=blue будет выводиться как /home/blue

Помните:

  • Правила обрабатываются в порядке

  • Перечислите более конкретные правила перед более общими правилами

Если вы хотите скрыть идентификатор беседы, вы можете сделать так:

<page view-id="/search.xhtml">
  <rewrite pattern="/search-{conversationId}" />
  <rewrite pattern="/search" />
</page>

Теперь /search.seam?conversationId=16 будет записано как /search-16

Если вы хотите сопоставить несколько страниц, используйте подстановочные знаки

<page login-required="true" view-id="/admin/*">

Надеюсь, это поможет

Обновление

Чтобы ответить на ваш вопрос об обновлении.

Вы можете создать подстановочный знак с внешней переписью, но не с переписыванием URL-адреса Seam.При переписывании на основе представления вам нужно будет объявить шаблон для каждого идентификатора представления, как вы описали себя.Извините, но именно так печенье крошится.: -)

2 голосов
/ 07 января 2011

да, есть.Посмотрите на здесь .

...