- Решение с открытым исходным кодом / url / # {rewriting} для сервлетов, JSF и Java EE
- SEO и последовательность:
- 1. Включите PrettyFaces в свой проект
- 2. Создайте pretty-config.xml
- Добавьте сопоставления в вашу конфигурацию
- 3. Запустите ваше приложение!
- Что отличает PrettyFaces:
- Почему бы и нет попробуйте PrettyFaces сейчас?.
- В. Почему мои компоненты Tomahawk / MyFaces или другие сторонние дополнения ломаются, когда я использую PrettyFaces?
- В. Почему при использовании MyFaces я получаю исключение NullPointerException при попытке использовать...
- В. Могу ли я настроить PrettyFaces с помощью аннотаций?
- В. Как включить ведение журнала, чтобы я мог сказать, что на самом деле происходит?
- В. Могу ли я отобразить и обработать URL-адреса, которые охватывают динамическое число символов «/»?
- Q. Как сохранить объекты FacesMessage после выполнения перенаправления или довольно перенаправления?
- В. Работает ли PrettyFaces в IBM WebSphere?
- Поддержите нас - Пожертвуйте
Решение с открытым исходным кодом / url / # {rewriting} для сервлетов, JSF и Java EE
PrettyFaces - это библиотека для перезаписи URL-адресов с расширенной поддержкой JavaServer Faces - JSF 1.1, 1.2 и 2.0, позволяющая создавать красивые URL-адреса с возможностью закладок. PrettyFaces элегантно решает проблему «RESTful URL», включая такие функции, как: действия по загрузке страницы, плавная интеграция с навигацией по граням, динамическое назначение идентификатора вида, анализ управляемых параметров и совместимость без конфигурации с другими веб-платформами. Посмотрите на особенности »
SEO и последовательность:
Любой бизнес знает, насколько важна поисковая оптимизация для продаж. PrettyFaces позволяет оптимизировать SEO-адреса и улучшить качество обслуживания клиентов. Придайте своему сайту единообразное, хорошо понятное ощущение - от адресной строки до кнопки «Купить».Начните, это просто! (3 шага)
Рекомендуется, но не обязательно удалять другие инструменты перезаписи URL из вашего приложения перед использованием PrettyFaces и / или [[Rewrite]]. Если вы решите оставить их на месте, с вами могут случиться странные вещи, будьте осторожны.
Присоединяйтесь к нам в #ocpsoft - наш канал на irc.freenode.net. Кроме того, вы можете посещать собрание разработчиков каждый [[Календарь | Понедельник в 13:00 EST]]. Также, пожалуйста, присоединяйтесь к обсуждению на нашем список рассылки разработчиков ,
1. Включите PrettyFaces в свой проект
Вы можете использовать Maven (рекомендуется), чтобы включить PrettyFaces в свой проект, или вы можете напрямую загрузить ZIP-файл дистрибутива.
Если вы обновляете с версии PrettyFaces 3.x, обратите внимание, что все функции обратно совместимы, но вы можете просмотреть руководство по миграции чтобы узнать о новых функциях, доступных в последних выпусках. <! - для JSF 2.x -> <зависимость> <groupId> org.ocpsoft.rewrite </ groupId> <artifactId> переписать сервлет </ artifactId> <версия> 3.4.1.Final </ версия> < / зависимость> <зависимость> <groupId> org.ocpsoft.rewrite </ groupId> <artifactId> rewrite-config-prettyfaces </ artifactId> <версия> 3.4.1.Final </ version> </ зависимость> (если вы используете более старая версия JSF, вы захотите использовать устаревшая зависимость PrettyFaces JSF 1.x: ) <! - для JSF 1.2.x (да, мы знаем, что номер версии сбивает с толку. извините!) -> <зависимость> <groupId> com.ocpsoft </ groupId> <artifactId> prettyfaces-jsf12 </ artifactId> <версия> 3.3.3 </ версия> </ зависимость>2. Создайте pretty-config.xml
Здесь вы будете создавать сопоставления URL-адресов между внешними шаблонами URL-адресов и файлами внутреннего представления, сервлетами и другими ресурсами. Обязательно замените приведенное ниже сопоставление сопоставлением, которое соответствует вашему приложению.
/WEB-INF/pretty-config.xml <pretty-config xmlns = "http://ocpsoft.org/schema/rewrite-config-prettyfaces" xmlns: xsi = "http://www.w3.org/2001/ XMLSchema-instance "xsi: schemaLocation =" http://ocpsoft.org/schema/rewrite-config-prettyfaces http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd "> <url- mapping id = "login"> <pattern value = "/ login" /> <view-id value = "/ legacy / user / login.jsp" /> </ url-mapping> </ pretty-config>Добавьте сопоставления в вашу конфигурацию
Эта часть все зависит от вас! Вам необходимо выяснить, какие URL-адреса в вашем приложении вы хотите «prettify» - так что обратитесь к [[PrettyFaces Docs | документация]] для получения подробной информации о том, как полностью использовать систему отображения URL-адресов PrettyFaces.
Кроме того, не забудьте проверить Переписать примеры или же справочное руководство чтобы узнать больше о [[Rewrite]] и о мощных опциях, которые он предлагает помимо модуля конфигурации PrettyFaces.
<url-mapping id = "view-user"> <pattern value = "/ user / # {username}" /> <view-id value = "/ user / view.xhtml" /> </ url-mapping> < ! - сопоставляет "/ user / # {username}" с URL-адресом "/user/view.xhtml?username=value" ->3. Запустите ваше приложение!
Теперь вы должны быть готовы к работе! PrettyFaces установлена, и ваше первое сопоставление URL создано. Если все сделано правильно, вы должны увидеть в журнале PrettyFaces сообщение, подтверждающее, что установка прошла успешно. INFO [org.ocpsoft.rewrite.servlet.RewriteFilter] RewriteFilter запускается ... ... INFO [org.ocpsoft.rewrite.servlet.RewriteFilter] Загружен [] org.ocpsoft.rewrite.config.ConfigurationProvider [org.ocpsoft. rewrite.prettyfaces.PrettyFacesRewriteConfigurationProvider <1>] INFO [org.ocpsoft.rewrite.servlet.RewriteFilter] RewriteFilter инициализирован.Документация (нужна помощь?)
Задайте вопрос в форумы , просмотреть документация , Часто задаваемые вопросы или получить источник !
- Перезапись URL - замените уродливые URL: «/faces/page.jsf» на красивые, оптимизированные для SEO, человеческие URL: «/ optimized / page /»; Клиентский браузер никогда не видит ваши оригинальные URL, даже в исходном HTML
- Динамические идентификаторы представлений. Теперь с помощью динамического сопоставления идентификаторов представлений для URL-адресов (с помощью выражений метода El) вы можете отображать различные представления в зависимости от условий выполнения, эффективно отсоединяя URL-адрес от представления JSF.
- Действия при загрузке страницы - вызовите один или несколько action-методов на одном или нескольких этапах перед отображением представления.
- Синтаксический анализ управляемых параметров - параметры HTTP, проанализированные по URL-адресам, хранятся в управляемых bean-компонентах, просто получите ссылку на ваш bean-компонент параметров для быстрого доступа из других классов Java.
- Навигация по идентификатору. Определите идентификаторы своей страницы в одном месте, легко ссылайтесь на них в методах действий и компонентах, используя стандартные методы навигации JSF.
- Интегрированная проверка - для URL и параметров запроса, может повторно использовать существующие объекты проверки JSF.
- Простота настройки - требуется абсолютно минимальная конфигурация; может быть включен с использованием XML или аннотаций.
Что отличает PrettyFaces:
Посмотреть слайд-презентацию на почему перезапись URL важна или краткий обзор проблемы PrettyFaces решает ,Почему бы и нет попробуйте PrettyFaces сейчас?.
В. Могу ли я использовать PrettyFaces для обработки перезаписи URL для других ресурсов на моем сервере?
А. Да. Для функционирования PrettyFaces по-прежнему требуется настроенный экземпляр JSF, но его можно использовать для сопоставления URL-адреса с любым ресурсом в контейнере сервлетов - без вызова FacesServlet. Значения будут вводиться в bean-компоненты JSF как обычно, но методы действий PrettyFaces не срабатывают (поскольку жизненный цикл JSF не выполняется для запросов не-Faces).
Например:
<pretty-config xmlns = "http://ocpsoft.org/schema/rewrite-config-prettyfaces" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http : //ocpsoft.org/schema/rewrite-config-prettyfaces http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd "> <url-mapping id =" login "> <значение шаблона = "/ login" /> <значение id-идентификатора = "/ legacy / user / login.jsp" /> <! - Идентификатор не-JSF-представления -> </ url-mapping> <url-mapping id = "register "> <pattern value =" / register "/> <view-id value =" /face / user / register.jsf "/> <! - Id View Id -> </ url-mapping> </ pretty- конфигурации>В. Почему мои компоненты Tomahawk / MyFaces или другие сторонние дополнения ломаются, когда я использую PrettyFaces?
О. Поскольку PrettyFaces перехватывает сопоставленные HttpRequests, а затем направляет эти запросы в JSF, необходимо включить любые дополнительные фильтры между PrettyFaces и JSF для прослушивания переадресации сервлетов. Это делается в дескрипторе развертывания web.xml путем добавления следующих элементов диспетчера к любым необходимым фильтрам:
Например:
<filter-mapping> <filter-name> springSecurityFilterChain </ filter-name> <url-pattern> / * </ url-pattern> <dispatcher> FORWARD </ dispatcher> <dispatcher> REQUEST </ dispatcher> </ filter- отображение>В. Почему при использовании MyFaces я получаю исключение NullPointerException при попытке использовать обычную навигацию по лицам?
О. Некоторые версии MyFaces не полностью соответствуют спецификации JSF, поэтому ViewRoot является нулевым при обработке запроса. Eсть патч / обходной путь , который можно добавить, чтобы исправить эту проблему. Вы должны добавить этот ViewHandler к вашему лицу config-xml.
В. Могу ли я настроить PrettyFaces с помощью аннотаций?
О. Да! Благодаря Christian Kapolteth, PrettyFaces имеет поддержку аннотаций начиная с версии 3.0.2-SNAPSHOT
В. Как включить ведение журнала, чтобы я мог сказать, что на самом деле происходит?
A. Создайте или обновите файл log4j.properties, используя следующие значения:
### прямые сообщения журнала в stdout ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {ABSOLUTE}% 5p% c {1}:% L -% m% n log4j.rootLogger = warn, stdout ### Журнал для OCPsoft log4j.logger.com.ocpsoft = ИнформацияВ. Могу ли я отобразить и обработать URL-адреса, которые охватывают динамическое число символов «/»?
А. Да, пожалуйста, прочитайте раздел 3.4 из документов.
Q. Как сохранить объекты FacesMessage после выполнения перенаправления или довольно перенаправления?
A. Вам необходимо настроить дополнительный MultiPageMessagesSupport PhaseListener (или что-то подобное)
<? xml version = '1.0' encoding = 'UTF-8'?> <face-config xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http: // www .w3.org / 2001 / XMLSchema-instance "xsi: schemaLocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0 .xsd "version =" 1.2 "> <lifecycle> <phase-listener> com.ocpsoft.pretty.application.MultiPageMessagesSupport </ phase-listener> </ lifecycle> </face-config> См. Эта статья для полного объяснения того, как это работает.В. Работает ли PrettyFaces в IBM WebSphere?
О. Да, но websphere требует пользовательской настройки, чтобы вести себя как нормальный сервер.
Поддержите нас - Пожертвуйте
Мы приветствуем пожертвования продолжать предоставлять дом для проектов с открытым исходным кодом OCPsoft. Или, если вам нравится этот проект, вы можете стать работает на PrettyFaces , Все пожертвования идут напрямую, чтобы компенсировать наши расходы на хостинг.Почему мои компоненты Tomahawk / MyFaces или другие сторонние дополнения ломаются, когда я использую PrettyFaces?Могу ли я настроить PrettyFaces с помощью аннотаций?
Как включить ведение журнала, чтобы я мог сказать, что на самом деле происходит?
Могу ли я отобразить и обработать URL-адреса, которые охватывают динамическое число символов «/»?
Как сохранить объекты FacesMessage после выполнения перенаправления или довольно перенаправления?
Работает ли PrettyFaces в IBM WebSphere?
Xhtml?
Нужна помощь?
Могу ли я использовать PrettyFaces для обработки перезаписи URL для других ресурсов на моем сервере?
Почему мои компоненты Tomahawk / MyFaces или другие сторонние дополнения ломаются, когда я использую PrettyFaces?