The <a4j:keepAlive> component allows to keep a state of each bean between requests.
Table 6.3. a4j : keepAlive attributes
Attribute Name | Description |
---|---|
ajaxOnly | if true, bean value restored in ajax requests only. |
beanName | name of bean for EL-expressions. |
Table 6.4. Component identification parameters
Name | Value |
---|---|
component-type | org.ajax4jsf.components.KeepAlive |
component-family | org.ajax4jsf.components.AjaxKeepAlive |
component-class | org.ajax4jsf.components.AjaxKeepAlive |
To create the simplest variant on a page use the following syntax:
Example:
<a4j:keepAlive beanName = "testBean"/>
Example:
import org.ajax4jsf.ajax.AjaxKeepAlive;
...
AjaxKeepAlive myKeepAlive = new AjaxKeepAlive();
...
If a managed bean is declared with request scope in the configuration file with the help of managed-bean-scope tag then the life-time of this bean instance is valid only for the current request. Any attempts to make a reference to the bean instance after the request end will throw in Illegal Argument Exception by the server. To avoid these kinds of Exception, component <a4j:keepAlive> is used to maintain the state of the whole bean object among subsequent request.
Example:
<a4j:keepAlive beanName = "#{myClass.testBean}"/>
Note that the attribute "beanName" must point to a legal jsf EL expression which resolves to a managed mean instance. For example for the above code the class definition may look like this:
class MyClass{
...
private TestBean testBean;
// Getters and Setters for testBean.
...
}