Как создать удобные и понятные URL-адреса в JSF? - PullRequest
8 голосов
/ 17 декабря 2009

Например, у меня есть класс Article с методами getTitle () и getContent ().

У меня также есть ArticlesService с методом getAllArticles (). Как создать список ссылок со значимыми именами (сформирован с #{article.title})? Как:

http://mysiteaddress.com/article/first-article-title
http://mysiteaddress.com/article/how-to-make-links-in-jsf

.. или что-то подобное.

Я могу создавать ссылки со всеми необходимыми функциями с помощью <h:commandLink>, но я не знаю, как сделать для него хороший 'href': у него всегда есть href '#'.

Я могу создавать красивые ссылки с помощью <h:outputLink>, но я не знаю, как добавить к нему необходимые функции.


В jsp я создал свой собственный front-контроллер, который анализировал URL-адреса из запросов и затем выполнял перенаправление на соответствующую jsp-страницу.

Как добиться такой же функциональности в JSF?

Ответы [ 2 ]

11 голосов
/ 17 декабря 2009

Если это задумано как улучшение существующего приложения, то вам в основном нужен Filter, который обнаруживает «грязные» и «дружественные» URL-адреса. Когда он обнаруживает «грязный» URL, он должен перенаправить запрос на «дружественный» URL по HttpServletResponse#sendRedirect(). Когда он обнаруживает «дружественный» URL, он должен переслать запрос на «грязный» URL по RequestDispatcher#forward(). Пример можно найти в этом связанном вопросе: Как использовать фильтр сервлета в Java для изменения URL-адреса входящего запроса сервлета?

Кроме того, вам также необходим пользовательский ViewHandler для создания желаемого «дружественного» URL для JSF <h:form>, <h:link> и т. Д. Пример можно найти здесь: Динамический Каталог в веб-приложении Java EE .

Если это новое приложение или приложение, которое открыто для изменений, вы можете рассмотреть любую из существующих симпатичных библиотек URL, а не изобретать велосипед:

  • PrettyFaces , которое является полным решением для перезаписи URL. Требуется дополнительный XML-файл конфигурации pretty-config.xml. Эта библиотека полезна, если вы хотите полностью изменить URL-адреса и / или настроить перенаправления со старых на новые URL.
  • FacesViews из OmniFaces библиотека, которая делает существующие URL просто без расширения одним параметром контекста web.xml. Он также поддерживает «MultiViews», посредством чего параметры пути могут декларативно вводиться в управляемые bean-компоненты. Например. /foo/bar/baz может указывать на /foo.xhtml, а значения bar и baz могут вводиться с помощью @Param(pathIndex).

Существует также экспериментальная PrettyUrlPhaseListener из Mojarra Scales библиотека, но это старая библиотека, и PrettyFaces в значительной степени основана на ней, поэтому она не стоит усилий.

8 голосов
/ 17 декабря 2009

Вы пробовали PrettyFaces ?

Простой, эффективный, закладка, JSF

PrettyFaces - это расширение OpenSource для JSF1.2 и JSF2.0, которое позволяет создавать красивые URL-адреса с возможностью закладок. PrettyFaces элегантно решает эту проблему, включая такие функции, как действия при загрузке страницы, плавная интеграция с навигацией по граням, динамическое назначение идентификатора вида, анализ управляемых параметров и совместимость без конфигурации с другими средами JSF.

SEO и последовательность:

Любой бизнес знает, насколько важна поисковая оптимизация для продаж. PrettyFaces позволяет оптимизировать SEO-адреса и улучшить качество обслуживания клиентов. Придайте своему сайту единообразное, хорошо понятное чувство - от адресной строки до кнопки покупки.

...