Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the view build time?

I'm pretty new to JSF and reading some of the stack-answers like this one, I faced with the concept of view build time. Consider the JSF lifecycle scheme:

enter image description here

As you can see, there's no phase called view build time. Maybe it means the same as Restore view phase? From the JavaEE tutorial

During this phase, the JavaServer Faces implementation builds the view of the page [...]

like image 515
stella Avatar asked Aug 08 '15 06:08

stella


Video Answer


1 Answers

The view build time is not a phase. The view build time is that moment when the physical UIViewRoot instance and all of its children is built based on the view declaration, which is usally defined in XHTML or JSP files.

The view build time moment is not restricted to a specific JSF lifecycle phase. It can technically happen in any phase. By default, it's indeed usually executed during the restore view phase, but it can also happen during the render response phase, specifically when the request is a GET request, or when navigation has taken place during a POST request. Developers can also programmatically build the view via ViewDeclarationLanguage#buildView(), or implicitly force the JSF implementation to do that via FacesContext#setViewRoot(), when navigation isn't sufficient for the specific task.

The restore view phase just restores the JSF state into the view. I.e. it sets the component attributes with values as they were during the previous request on the same view. This way JSF knows exactly how the view looked like at the moment the form was being presented to the enduser and can among others do some safeguards against tampered requests.

See also:

  • How does the 'binding' attribute work in JSF? When and how should it be used?
  • creating jsf view/Component tree from the xhtml file
  • JSF 2 Global exception handling, navigation to error page not happening
  • Why JSF saves the state of UI components on server?
like image 56
BalusC Avatar answered Sep 30 '22 18:09

BalusC