Прежде всего,
не представляет путь к «домашней странице по умолчанию». Он представляет собой имя файла физического файла, содержащегося в папке, которую вы хотите использовать в качестве файла по умолчанию, когда запрашивается папка типа /
, /foo/
, /foo/bar/
и т. Д.
Таким образом, в JSF 2.x-аромате это будет в основном:
index.xhtml
Таким образом, если конечный пользователь запрашивает /
, и у вас есть /index.xhtml
, он будет обслуживаться. Или, если enduser запрашивает /foo
, и у вас есть /foo/index.xhtml
, тогда он будет обслуживаться и т. Д. Если такого файла нет, тогда будет возвращена ошибка 404.
Теперь вы появляетесь чтобы отобразить ваш FacesServlet
на префиксе
в /faces/*
. Это осталось от JSF 1.0 / 1.1 возрастов и на самом деле не рекомендуется в наши дни. Возможно, вы читали устаревший учебник, ориентированный на JSF 1.x, или плохо поддерживаемый учебник, который был первоначально написан для JSF 1.x, а затем незаметно обновлен для JSF 2.x вместо перезаписывания с нуля.
Этот учебник также, похоже, не объяснил вам некоторые основы сервлетов . А именно, чтобы заставить JSF-компоненты на странице XHTML запускать и генерировать некоторый вывод HTML, FacesServlet
необходимо вызвать, когда запрашивается страница XHTML. Когда вы запрашиваете страницу XHTML так /index.xhtml
, а FacesServlet
отображается на /faces/*
, тогда она не будет вызываться. Затем браузер будет извлекать необработанный исходный код JSF без генерируемого вывода HTML. Вы можете увидеть его правой кнопкой мыши, Просмотреть источник в веб-браузере. Вы должны были запросить такую страницу как /faces/index.xhtml
, чтобы FacesServlet
мог запускать и выводить HTML-вывод, который браузер может понять и представить.
Это не очень хорошо сочетается с файлами приветствия. Это полностью объясняет, почему вы получаете «чистую белую» (пустую) страницу при использовании index.xhtml
в качестве приветственного файла (некоторые уступающие веб-браузеры, такие как IE, путают запрашивают диалоговое окно загрузки из-за отсутствия / неправильного типа содержимого на ответ, содержащий исходный исходный код XHTML). FacesServlet
просто не вызывался. Просто избавитесь от старомодного шаблона URL /faces/*
и используйте шаблон URL-адреса JSF 2.x *.xhtml
.
facesServlet
*.xhtml
Таким образом, файлы приветствия должны работать, и вы можете просто открыть JSF страниц, напрямую запрашивая его физический URL-адрес без сбоев с виртуальными URL-адресами. Это невозможно в JSF 1.x, потому что это позволяло FacesServlet
работать в бесконечном цикле, вызывающем себя и вызывающем переполнение стека.
Что касается этих предупреждений, они не связаны друг с другом, но вполне доступны для поиска.