Error: /*.xhtml Not Found in ExternalContext as a Resource
При запуске JSF приложения может возникать ошибка Error: /*.xhtml Not Found in ExternalContext as a Resource, которая говорит о том, что такая-то страница не найдена (или к ней нет доступа).
Самой распространенной ошибкой является помещение представлений в папку WEB-INF, к которой по умолчанию прямого доступа из адресной строки нет.
Папка WEB-INF используется для хранения файлов конфигурации, шаблонов и других файлов, которые должны быть скрыты от прямого доступа (например просто набрав /somepage.xhtml). Файлы с публичным доступом (т.е. доступны по прямой ссылке) должны храниться вне папки /WEB-INF/
1 2 3 4 5 6 |
<span class="pln">webapp |-- META-INF |-- WEB-INF | |-- faces-config.xml | `-- web.xml `-- login.xhtml</span> |
Таким образом вот так будет работать:
1 2 3 4 5 6 7 8 |
webapp |-- META-INF |-- WEB-INF | |-- faces-config.xml | `-- web.xml |-- views | |-- somePage.xml `-- login.xhtml |
А вот так прямой доступ, например к index.xhtml или login.xhtml, вы не получите и будет ошибка:
com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError com.sun.faces.context.FacesFileNotFoundException: Error: /index.xhtml (login.xhtml) Not Found in ExternalContext as a Resource
Ошибочная структура:
1 2 3 4 5 6 7 8 |
webapp |-- META-INF |-- WEB-INF | |-- index.xhtml | |-- views | |-- somePage.xml | |-- faces-config.xml | `-- web.xml |
4