Ответ 1
/faces/
распознается как шаблон URL JSF 1.0/1.1, где FacesServlet
часто по умолчанию отображается на основе IDE-сгенерированного проекта configuratoin, который впоследствии не редактировался разработчиком. Вы можете увидеть это в web.xml
как нечто подобное:
<servlet-mapping>
<servlet-name>Faces Servlet<servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Возможно, есть и <welcome-file>
напр. faces/index.xhtml
или около того.
Чтобы избавиться от него, просто замените его на *.xhtml
.
<servlet-mapping>
<servlet-name>Faces Servlet<servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Таким образом, вы можете открыть страницу JSF http://example.com/context/page.xhtml
вместо http://example.com/context/faces/page.xhtml
, чтобы запустить FacesServlet
(это именно тот, который отвечает за все работы JSF).
Или, когда вы на самом деле используете устаревший JSF 1.x и/или когда вы фактически используете устаревший JSP вместо своих преемников Facelets (XHTML), вместо этого вы можете использовать *.jsf
.
<servlet-mapping>
<servlet-name>Faces Servlet<servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Таким образом, вы можете открыть страницу JSF http://example.com/context/page.jsf
вместо http://example.com/context/faces/page.jsp
.