Need help to understand what I'm doing
fredatwork Nov 20, 2007 10:29 AMHello,
I need some help to understand better the usage of the session context.
I've got a bean in the session context with a property 'scroller' that will be bound to a Richfaces datascroller component :
@Stateful(name="EqtWebEquitySelector") @Name("equitySelector") @Scope(ScopeType.SESSION) @TransactionAttribute(TransactionAttributeType.SUPPORTS) public class EqtWebEquitySelectorBean implements EqtWebEquitySelectorLocal { .../... // Scroller private HtmlDatascroller scroller; /** * @see com.rubis.web.equity.EqtWebEquitySelectorLocal#getScroller() */ public HtmlDatascroller getScroller() { return scroller; } /** * @see com.rubis.web.equity.EqtWebEquitySelectorLocal#setScroller(org.richfaces.component.html.HtmlDatascroller) */ public void setScroller(HtmlDatascroller scroller) { this.scroller = scroller; } .../... }
Its interface is :
package com.rubis.web.equity; import org.richfaces.component.html.HtmlDatascroller; public interface EqtWebEquitySelectorLocal { .../... public HtmlDatascroller getScroller(); public void setScroller(HtmlDatascroller scroller); .../... }
A page binds the property 'scroller' to the 'equitySelector' component :
<h:inputText id="equitySearchCriteria" size="10" value="#{equitySelector.searchCriteria}"> <a4j:support id="equitySearchCriteriaSupport" event="onkeyup" actionListener="#{equitySelector.search}" reRender="equityListArea" requestDelay="375" timeout="3000" /> </h:inputText> <a4j:outputPanel id="equityListArea"> <rich:dataTable id="equityTable" .../... > .../... </rich:dataTable> <rich:datascroller for="equityTable" actionListener="#{equitySelector.scroll}" binding="#{equitySelector.scroller}" />
If a remove the @Scope(ScopeType.SESSION) annotation from the bean, the JSF rendering of the page fails. It says that 'equitySelector' is null.
If I remove the binding to the 'scroller' property, the rest of the page works, that is 'equitySelector' is found (it is used appropriately some other places in the page).
Why is this ?
Why do I have to load the session context ?
Is there w way to use some other scope type for the bean than SESSION ?
I would like not to overload my http session with stateful data ? Can I use the PAGE scope type instead ?
Fred