Hi All

My company has chosen to use jsf in a new project. I myself am used to SpringMVC which works perfectly for my needs but I figured, why not try jsf since I have to use. I am running into a problem which is a pretty huge problem in jsf. Maybe someone can explain it to me how to solve my problem. It's also possible that I dont understand the concept correctly.

I want to redrect a user to a page where they can edit their address. In Spring MVC I would redirect the user to /editAddress.do?id=persons_id. As you can see I would pass the id of the logged in person to the url and the controller will verify that the passed id is the same as the currently logged in user and then the controller will load the users address and display it on the screen.

I want to do the same in jsf. I have a user profile page and on that page, users can edit their address by pressing a button. I have attached an action to the button and created the method in the Page object. This method is editAddress. In jsf if I want to redirect to the edit address page but it turns out that I cant supply parameters in the navigation xml file. I read on the Internet that I have to load the edit address page using it's bean name and then fill in the information in the edit address bean and then return the flow id. That I must return the flow id is great because that way no url's are defioned in page objects but that I must load the page bean with the following code is really and I mean really hard to understand:

FacesContext facesContext = FacesContext.getCurrentInstance( );
ExpressionFactory factory = facesContext.getApplication( ).getExpressionFactory( ); EditAddressPage page = factory.createValueExpression( facesContext.getELContext( ), PAGE_NAME, Object.class ).getValue(FacesContext.getCurrentInstance().getELContext());

I then need to fill the edit address page with the address data. I thought jsf was supposed to be easy to use but this is ridiculous. Can someone please tell me if there is a much easier way to pass information onto a page either via a parameter or some other way, preferably via parameters and as a redirect instead of an internal forward.

Thanks in advance,
Martyn





Reply via email to