First I have to say, I never use JSF navigation mechanism for these reasons: - forward is never an option because the url is not in sync. - you are left with redirect which makes it impossible to pass parameters in a reasonable way. When I say reasonable way, I mean request parameters.
So when I navigate to a page I use parameters. For example: http://localhost//car_details?carId=5 When command is activated on the page (requesting the server), JSF refreshes the view And taking off the parameters of the original request. In regular JSP form post, the url parameters are preserved. Now, the pretty url as far as I understand, comes to solve this problem in jsf. So beside of being "pretty", there are no request parameters that can "disappear" after a refresh. There is only a url path. Therefore if page is refreshed, parameters are still there. Which is a nice and acceptable solution. But, then we come to the problem of the original post: I do initialization in the constructor. But the pretty url will inject the parameters directly to the bean, causing The constructor to be activated first... So how can I initialize my page objects in proper way? -----Original Message----- From: Andrew Robinson [mailto:[EMAIL PROTECTED] Sent: Sunday, May 04, 2008 4:48 PM To: MyFaces Discussion Subject: Re: Pretty urls Why do you say that parameters do not stay put? JSF uses the normal servlet API to handle parameters, the code is excactly the same as JSP which also just uses the servlet container code On 5/4/08, Guy Bashan <[EMAIL PROTECTED]> wrote: > Hi, > > > > I read about JSF pretty url solution, for solving JSF post problem, when url > parameters are getting lost after submitting the page. > > As far as I understand, the parameters in the url are injected directly to > the bean. > > The thing that I cannot understand, in what cases this solution is usable? > In most of the pages, parameters used to load data to the object. > > For example, for editing car details I would use: car_details.jspx?carId=5. > > The data of the form is being loaded in the constructor. > > So I will do something like this in the bean constructor: > > Id = getParamFromRequest("carId"); > > If (Id != null) // Edit existing car > > { > > car = loadCar(Id); > > } > > Else // Enter new car details > > { > > Car = new Car(); > > } > > > > Now, how can I use prett url? By injecting the parameter directly to the > bean, the constructor will be activated first, then the setter. > > One may say, initialize the Car object in the setter method of the bean. > > Is it a trivial solution? (It looks a bit not neat initializing object in a > setter method). > > > > Why JSF has never supplied a decent solution to this problem? This is a > critical issue in web development (not loosing parameters after a post > operation). > > Why are parameters does not stay after post? In regular JSP post operation, > the parameters are preserved. > > > > Thanks, > > Guy. > >

