Ashwin Kumar
Ashwin Kumar

Reputation: 13

Preloading data into JSF page before response is rendered for the previous request

I am a beginner in JSF. I am building an application where on loggin on user details from the database are to be displayed in another JSP. I use a managed bean each for all of my jsp pages (JSF) I have defined thier scope as request in my faces-config XML. On logging in the details are verified by an actionListener method in my login page. Before leaving this method I am attempting to set attributes of the managed bean of the next page. But the state that I have set is not preserved in the second page. What am I missing out.

P.S. Please redirect me if this question was asked before and answered.

Thank you

Upvotes: 1

Views: 1381

Answers (1)

Bozho
Bozho

Reputation: 597106

The boundary between the two requests is when you return the navigation outcome from your managed bean action. Then a redirect (if configured so) is triggered to that outcome.

You have three options:

  • don't use <redirect /> in your navigation rules - thus you'll stay within the same request even when you show another page after submit. The downside is that this hurts user experience - if refresh is pressed, the ugly 'resubmit' dialog appears
  • use session scope - this is not harmful in small doses, but be careful not to have too many session-scoped beans.
  • use a conversation framework (like MyFaces Orchestra) - defines a custom scope called "conversation.access" - your data is accessible as long as it is needed.
  • use <a4j:keepAlive> from richfaces - preferred for ajax-requests.

Upvotes: 2

Related Questions