Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSF 1.2: How to keep request scoped managed bean alive across postbacks on same view?

Is it possible to keep a request scoped bean alive across postbacks on the same page?

The general problem is, as the bean gets trashed on end of request and recreated on every form submit, for example the booleans behind dynamically manipulated disabled, readonly and rendered get reset to their default values and cause the forms to not work as intented anymore.

like image 579
Chris Avatar asked May 05 '11 11:05

Chris


1 Answers

I'll assume that the session scope is not an option, otherwise this question makes little sense.

You can do it using Tomahawk <t:saveState>. Add the following line somewhere to the page:

<t:saveState value="#{bean}" />

RichFaces <a4j:keepAlive> does also the same:

<a4j:keepAlive beanName="#{bean}" />

Or if there is room, upgrade to at least JSF 2.x and put the bean in view scope:

@ManagedBean
@ViewScoped
public class Bean implements Serializable {
    // ...
}

Regardless of the way, the same bean will be there when you postback to the same view and keep returning null or void from action methods.

See also:

  • How to choose the right bean scope?
  • Difference between View and Request scope in managed beans
like image 93
BalusC Avatar answered Oct 20 '22 03:10

BalusC