How to a4j:keepAlive
jmiguel77 Jun 20, 2007 6:32 PMHi
I don't know if i am using a4j:keepAlive in the correct manner, but it seems to me that it is not storing the values in the way it should
Let's assume this
<a4j:keepAlive beanName="modulosFormasDataManager" /> <h:form> <rich:tabPanel> <rich:tab id="modulosTab" label="Modulos" actionListener="#{modulosFormasController.tabActionListener}"> <rich:dataTable id="modulosDataTable" binding="#{modulosFormasController.modulosDataTable}" value="#{modulosFormasDataManager.modulos}" var="item" cellspacing="0" cellpadding="2" styleClass="cb-rich-table" headerClass="headerCell" columnClasses="headerCell,dataCell,dataCell,dataCell,dataCell,dataCell,dataCell" rowKeyVar="row"> <rich:column id="moduleRowColumn" style="width:20px"> <f:facet name="header"><h:outputText value=" " escape="false"/></f:facet> <h:outputText id="moduleRowNumber" value="#{row+1}" /> </rich:column> <rich:column id="moduleNameColumn"> <f:facet name="header"><h:outputText value="Módulo" escape="false"/></f:facet> <h:outputText id="moduleName" value="#{item.nombre}" /> </rich:column> <rich:column id="moduleStateColumn"> <f:facet name="header"><h:outputText value="Estado" escape="false"/></f:facet> <h:outputText id="moduleState" value="#{item.estado}" /> </rich:column> <rich:column id="moduleResponsibleColumn"> <f:facet name="header"><h:outputText value="Responsable" escape="false"/></f:facet> <h:outputText id="moduleResponsible" value="#{item.responsable}" /> </rich:column> <a4j:support id="moduleSelectRowSupport" event="onRowClick" data="#{modulosFormasDataManager.selectedModulo}" actionListener="#{modulosFormasController.selectRowListener}" onsubmit="setSelectedRow(this)" oncomplete="alert(data);" /> </rich:dataTable> </rich:tab> <rich:tab> some other code </rich:tab> </rich:tabPanel>
the modulosFormasDataManager is a request scoped bean that has some properties to work with my data; basically is just a data holder; it is also a managed property of the page backing bean
<managed-bean> <managed-bean-name>modulosFormasDataManager</managed-bean-name> <managed-bean-class>com.casabaca.administration.web.common.ModulosFormasDataManager</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>modulosFormasController</managed-bean-name> <managed-bean-class>com.casabaca.administration.web.controller.ModulosFormasController</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>modulosFormasDataManager</property-name> <property-class>com.casabaca.administration.web.common.ModulosFormasDataManager</property-class> <value>#{modulosFormasDataManager}</value> </managed-property> </managed-bean>
the ModulosFormasDataManager bean has a property named selectedRow, so when i click on a row of the table, i use an actionListener to define that property from the rowData of the dataTable. I assume that if i click on a row and set the value properly in the modulosFormasDataManager, and then i click in the other tab the selectedRow of the modulosFormasDataManager must be present but it is not, the property is null
even more, if i click on a row, i assume the value is setted in modulosFormasDataManager.selectedRow and stays there for as long i remain in the page; but if i click in another row and check the last value of the selectedRow property it is always null
Am i missunderstanding the use of the a4j:keepAlive ??? how is it suppossed to be used ??
thanks a lot