В каком основании создается и сохраняется идентификатор вида?
Идентификатор вида - это контекстный относительный путь файла вида. Например. /foo.jsp
или /foo.xhtml
. Реализация ViewHandler
отвечает за ее создание и хранение в UIViewRoot
.
Он создан на основе JSP, объявленного на faces-config.xml?
Это необязательно должно быть объявлено где-либо в faces-config.xml
. Для каждого входящего запроса, он извлекается из запроса URI с помощью базового объекта HttpServletRequest
его getPathInfo()
или getServletPath()
методов, в зависимости от того, сам FacesServlet
отображаются с префиксом шаблоном (/faces/*
) или суффикс шаблоном (*.jsf
) соответственно.
Когда JSF должна перейти к новому зрения в соответствии с <navigation-case>
в faces-config.xml
, то новый вид идентификатор просто извлекается из него, и новый UIViewRoot
создается конце фазы Invoke действий. В противном случае JSF просто возвращается к тому же представлению, что и запрос.
В основном, он создан для каждого JSP-идентификатора одного вида?
Да, каждый вид имеет свой собственный уникальный идентификатор, который в основном является его местоположением в контексте web-приложения.
Как просмотреть идентификаторы для передачи ответа? Он передан в параметре запроса?
Они хранятся в UIViewRoot
, который, в свою очередь, доступен только FacesContext#getViewRoot()
. Реализация ViewHandler
просто вызывает getViewId()
во время метода renderView()
.