Сопоставление разных URL-адресов с одним и тем же файлом xhtml

#jsf #jsf-2

#jsf #jsf-2

Вопрос:

С jsf 2.x я хочу использовать URL-адреса, такие как

 ../admin1.xhtml  
../admin2.xhtml  
../admin3.xhtml  
  

все это должно вызывать один и тот же файл xhtml (generic.xhtml), но с таким параметром:

 ../generic.xhtml?page=admin1  
../generic.xhtml?page=admin2  
../generic.xhtml?page=admin3  
  

вместо создания множества бесполезных идентичных файлов xhtml для обслуживания запросов. Как я могу лучше добиться этого с помощью jsfs? Обязан ли я писать множество XML-файлов или я могу создать простое правило в faces-config.xml , или я должен использовать какие-то другие инструменты?

Ответ №1:

Используйте PrettyFaces url prettyfier . Прежде всего, это позволит вам удалить расширения ваших файлов, что считается лучшей практикой (вы сможете изменить свою серверную среду, не изменяя сами URL-адреса).

Кроме того, есть возможность интегрировать сам параметр в URL:

 <!-- Maps "/admin/#{page}" to the URL "/generic.xhtml?page=value" -->
<url-mapping id="admin-view">
    <pattern value="/admin/#{page}" />
    <view-id value="/generic.xhtml" />
</url-mapping>
  

Таким образом, вы сможете ввести:

 /admin/admin1
  

И это приведет вас к:

 /generic.xhtml?page=admin1