1 Reply Latest reply on Apr 5, 2008 10:43 PM by jacob.orshalick

    Browse back button issue

      Hi every one


      i have the same problem what they discussed here

      My Link
      http://solutionsfit.com/blog/2007/11/08/alleviating-client-side-back-button-issues-with-ajax4jsf-and-richfaces/


      i try the workaround code , but i cant fix the problem
      this is what i am try .


      1. The following is my code for a home page.


      
      <body onload="reloadAjaxPanels()">
      
      <a4j:form id="form">
      
           <a4j:jsFunction name="reloadAjaxPanels" reRender="panelToReload" />
      
           <a4j:outputPanel id="panelToReload">
      
           <h:selectManyCheckbox id="Brand"  value="#{search.brand}"  >
      
           <f:selectItems value="#{brandItems}"/>
      
           <a4j:support event="onclick" reRender="form"/>
      
           </h:selectManyCheckbox>
      
      
           <rich:dataTable rows="10" id="ver" value="#{prodlis}" var="category">          
      
                <h:column>
      
                     <f:facet name="header">     
      
                     <h:outputText styleClass="headerText" value="Product Name" />
      
                     </f:facet>
      
                     <h:outputText value="#{category.productName}" />
      
                </h:column>          
      
                
      
                <h:column>
      
                     <f:facet name="header">     
      
                     <h:outputText styleClass="headerText" value="Brand" />
      
                     </f:facet>
      
                     <h:outputText value="#{category.brand}" />
      
                </h:column>          
      
           </rich:dataTable>
      
      
           <rich:datascroller ajaxSingle="false" for="ver" maxPages="4" />
      
           </a4j:outputPanel>     
      
      </a4j:form>
      
      </body
      
      



      2. This is my session bean code


      
      package session.beans;
      
      
      import static org.jboss.seam.ScopeType.CONVERSATION;
      
      
      import java.io.Serializable;
      
      import java.math.BigDecimal;
      
      import java.util.ArrayList;
      
      import java.util.LinkedList;
      
      import java.util.List;
      
      
      import javax.ejb.Remove;
      
      import javax.ejb.Stateful;
      
      import javax.faces.model.SelectItem;
      
      import javax.persistence.EntityManager;
      
      
      import org.jboss.seam.annotations.Begin;
      
      import org.jboss.seam.annotations.Destroy;
      
      import org.jboss.seam.annotations.End;
      
      import org.jboss.seam.annotations.In;
      
      import org.jboss.seam.annotations.Name;
      
      import org.jboss.seam.annotations.Out;
      
      import org.jboss.seam.annotations.web.RequestParameter;
      
      
      import entity.beans.TblProducts;
      
      @Stateful
      
      @Name("search")
      
      public class homeAction implements Home, Serializable{
      
           
      
           @In EntityManager entityManager;
      
           
      
           @RequestParameter
      
           BigDecimal hid;
      
           
      
           @Out(required=false)
      
               List<TblProducts> prodlis;     
      
      
               List<TblProducts> temp;
      
           
      
           @Out(required=false)
      
               List<SelectItem> brandItems;
      
           
      
               String []brand;
      
          
      
          @Begin(join=true)
      
          public void ProductsList() 
      
          {
      
                brandItems=new LinkedList<SelectItem>(); 
      
                prodlis= entityManager.createQuery("select  b from TblProducts b where b.subcategoryId="+hid).getResultList();
      
      
                temp=new ArrayList<TblProducts>(prodlis);
      
      
           List<String>  filter= entityManager.createQuery("select  distinct(t.brand) from TblProducts t where t.subcategoryId="+hid).getResultList();
      
                 
      
                 for(String a:filter) 
      
                brandItems.add(new SelectItem(a,a));
      
          }
      
      
           public String[] getBrand() {
      
                return brand;
      
           }
      
      
           public void setBrand(String[] brand) {
      
                this.brand = brand;     
      
                List<TblProducts> temp1=new ArrayList<TblProducts>();
      
                
      
                     for(String a:brand)
      
                          for(TblProducts b:temp)
      
                               if(b.getBrand().equalsIgnoreCase(a))
      
                                    temp1.add(b);                              
      
                     if(brand.length>0)
      
                          prodlis=temp1;
      
                     else
      
                          prodlis=temp;
      
           }
      
           
      
           @End
      
           public void reset() {
      
                // TODO Auto-generated method stub          
      
           }
      
           
      
            @Destroy 
      
            @Remove
      
           public void destroy() {
      
                // TODO Auto-generated method stub          
      
           }
      
      }
      
      


      this code for data table filter ,
      if any one click the particular brand i need to filter the data table records with the brands.


      i have the problem with IE back button .
      after filter particular brand , then i visit some other page , then i hit back button of the browser , i check box selection will be deselected , and also my data table shows all the products .


      i need to maintain the previous filter stage .
      How to do that.


      By
      Thiagu.m

        • 1. Re: Browse back button issue

          Are you sure that your conversation is being started appropriately?  If the conversation is not being promoted to long-running, each time you go back to the page and the onload is executed a new prodlis instance will be initialized and outjected causing the behavior you are noting.