Krishna
Krishna

Reputation: 7294

Request handling inside the FacesContext

HI,

This question is from previously answered question by BalusC. The excerpt of the answer as follows:

This happens only if under the covers a forward by RequestDispatcher#forward() takes place. In a forward, the servletcontainer basically reuses the same HTTP request/response for a view (JSP/XHTML page). It does not force/instruct the webbrowser to send a brand new request.

What this means is every new view is rendered using the forward. The following are my questions:

Upvotes: 0

Views: 621

Answers (2)

BalusC
BalusC

Reputation: 1108722

If the above is the case, then all the views displayed with the same request?. Because, we are always seeing the same URL in the address bar.

If it concerns a HTTP POST request and the JSF bean action navigates to a different view, then per saldo you will indeed have two different views in the same request. One for the initial view which is been used to gather/convert/validate the necessary request parameters and update the model values and other for the result view which is been used to show some result.

Is it that the values in the previous request is retained for the new request?

In a forward there's no means of a new request. It's the same request.

In this case, if every request is same then is it like storing in the session, for long time. I am bit confused on the view handling by JSF. Want to understand more internal work flow of JSF.

This is definitely not the case. As to your confusion, it may help to put JSF aside for a while and go playing with plain vanilla JSP/Servlet (which is what JSF is using under the covers). I think the following links may help in getting new insights about how basic JSP/Servlet works and how the average MVC framework on top of JSP/Servlet works:

When we use the <redirect/> in faces-config.xml, will the URL in address bar get changed?

Yes. A HTTP redirect sends a HTTP location: newpage.jsf header which in turn instructs the webbrowser to fire a new HTTP GET request on the given location. This get reflected in the browser address bar. You may want to install a HTTP debugging tool like Firebug or Fiddler2 to track HTTP traffic. You'll see that a forward happens inside the same request and a redirect comes with a new request.

Upvotes: 1

Jigar Joshi
Jigar Joshi

Reputation: 240900

If the above is the case, then all the views displayed with the same request?. Because, we are always seeing the same URL in the address bar.

if the url is the same in the web-browser then there can be two cases. either the same request is being forwarded as he mentioned OR new GET request is issued with same URL [which is lesser the case]

Is it that the values in the previous request is retained for the new request?

request life cycle will be from request to response. so after response all the managed bean with request scoped will get destroyed.

When we use the in faces-config.xml, will the URL in address bar get changed?

Yes it will instruct browser to issue new GET request for new URL.

Upvotes: 1

Related Questions