как скрыть доступ URL-адресов с помощью обработчика навигации JSF в 2.0 - PullRequest
2 голосов
/ 04 июля 2011

У меня есть веб-приложение с tomcat 6.0 и JSF 2.0 с richfaces 4.0.0 Final.

Все мои страницы с расширением xhtml.

Все мои навигации в faces-config.xml также имеют .xhtml расширения.

В настоящее время браузер показывает весь URL с расширением .xhtml файла, к которому перемещается FacesServlet.

Я хотел бы показать только базовый URL-адрес, такой как localhost:8080/appname для всех переходов.

Возможно ли это?

1 Ответ

0 голосов
/ 04 июля 2011

Да, это возможно, если вы поместите весь статический контент, например изображения, таблицы стилей, javascripts и т. Д., В фиксированную общую папку, такую ​​как /static, /resources, /assets и т. Д., И если вы сопоставите FacesServlet сам по шаблону URL *.xhtml.

Затем вы можете создать Filter, который сопоставляется шаблону URL /* и прозрачно продолжает цепочку запросов / ответов для всего статического содержимого иотправляет остаток в FacesServlet.

String uri = ((HttpServletRequest) request).getRequestURI();

if (uri.startsWith("/static/")) {
    chain.doFilter(request, response); // Goes to default servlet.
} else {
    request.getRequestDispatcher(uri + ".xhtml").forward(request, response); // Goes to faces servlet.
}

Это невозможно с обработчиком навигации, так как он должен выполняться в контексте граней, который доступен только при запуске сервлета граней.

...