Вы говорите о <welcome-file>
, верно?Он должен указывать на физически существующий файл , поскольку он внутренне используется контейнером сервлетов для отображения ресурса по умолчанию при каждом запросе папки.Контейнер сервлета сначала проверит, существует ли файл, а затем выполнит пересылку.Если файл не существует, вы просто получите 404.
Объединение этого с JSF, которое выполняется по виртуальному URL, требует только специального трюка.По сути, вам нужно обмануть сервлет-контейнер физически существующим, но пустым index.jsf
файлом, который находится в папке рядом с вашим настоящим index.xhtml
файлом.Таким образом, сервлет-контейнер не будет показывать 404, но выполнит пересылку в файл, который автоматически вызовет FacesServlet
.
Но если вы уже используете JSF 2.x (который не кажетсяв любом случае, но в любом случае, просто ради полноты), вы также можете просто изменить шаблон URL FacesServlet
с *.jsf
(и /faces/*
) на *.xhtml
.Таким образом, вам больше не нужно возиться с виртуальными URL.Это невозможно в JSF 1.x, потому что FacesServlet
будет вызывать себя в бесконечном цикле.