6 Replies Latest reply on Apr 27, 2010 11:29 AM by Kevin Sapper

    Remembering state of tabPanel

    Mader Levap Newbie
      I have something like this:

      <rich:tabPanel switchType="ajax" styleClass="top_tab" contentClass="content_tab" headerClass="header_tabs_class" inactiveTabClass="inactive_tab" activeTabClass="active_tab"
          selectedTab="#{conf.getUsrVal('admin.test.mainTab','1')}">
        <rich:tab label="subpage1" name="1" action="#{conf.setUsrVal('admin.test.mainTab','1')}">
          <ui:include src="/modules/admin/test/subpage1.xhtml"/>
        </rich:tab>
        <rich:tab label="subpage2" name="2" action="#{conf.setUsrVal('admin.test.mainTab','2')}">
          <ui:include src="/modules/admin/test/subpage2.xhtml"/>
        </rich:tab>
      </rich:tabPanel>

      Conf is bean that saves configuration of current user. After logout and logging in again, user has tab in same position as before logout. Method getUsrVal need two parameters - name of config variable and default value (when config variable does not yet exist). setUsrVal have also two parameters - name of config variable and new value.

      Of course, this does not work. When loads page first time, it will change tab correctly. But dare to try to change tab!
      12:48:05,078 ERROR [lifecycle] JSF1054: (Phase ID: UPDATE_MODEL_VALUES 4, View ID: /modules/admin/test.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@15ed323]
      12:48:05,078 WARN  [ExceptionFilter] handling uncaught exception
      javax.servlet.ServletException: /modules/admin/test.xhtml @15,63 selectedTab="#{conf.getUsrVal('admin.test.mainTab','1')}": Illegal Syntax for Set Operation
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
              at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:51)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
              at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
              at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
              at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
              at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
              at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
              at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.el.PropertyNotWritableException: /modules/admin/test.xhtml @15,63 selectedTab="#{conf.getUsrVal('admin.test.mainTab','1')}": Illegal Syntax for Set Operation
              at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:98)
              at org.richfaces.component.UISwitchablePanel.broadcast(UISwitchablePanel.java:130)
              at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
              at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
              at org.ajax4jsf.component.AjaxViewRoot.processUpdates(AjaxViewRoot.java:432)
              at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
              at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
              ... 41 more
      12:48:05,109 WARN  [ExceptionFilter] exception root cause
      javax.el.PropertyNotWritableException: /modules/admin/test.xhtml @15,63 selectedTab="#{conf.getUsrVal('admin.test.mainTab','1')}": Illegal Syntax for Set Operation
              at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:98)
              at org.richfaces.component.UISwitchablePanel.broadcast(UISwitchablePanel.java:130)
              at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
              at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
              at org.ajax4jsf.component.AjaxViewRoot.processUpdates(AjaxViewRoot.java:432)
              at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
              at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
              at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:51)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
              at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
              at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
              at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
              at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
              at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
              at java.lang.Thread.run(Thread.java:595)

      Note that if I set selectedTab="1", all works nicely (config variables are properly inserted/updated to database), except, of course, setting proper tab on beginning. In other words, action="..." in rich:tab tag works.

      Surfing on Internet and searching answers about this problem brings this pearl of wisdom:
      "your binding needs to be a standard Javabean property, i.e. it requires both a get and set method."
      Source: http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4075704

      Other pearl of infinity wisdom: "And also, remove the () from your expression you don't need them."
      Unfortunately, I NEED () and arguments here. How I can send arguments without ()?

      I tried to cheat seam (setGetUsrVal() that does nothing), but noooo. Seam is not THAT stupid (only when this makes life harder for developer, of course).

      If this artifical constraint of seam braindead design is impossible to circumvent, then how can I implement this kind of functionality (remembering what tabs was active when logoffed and restoring them after login again)?

      No, creating 1000 getters and setters for each configuration variable in my system will NOT cut it.
        • 1. Re: Remembering state of tabPanel
          Luke Simon Newbie

          I know how you feel...I'm in the same sh*t.
          I need this too, but I haven't found any solution yet, if you find something please post it! :-D

          • 2. Re: Remembering state of tabPanel
            Dan Hayes Newbie

            Don't know if you solved this yet....


            I believe you may be over complicating things.  I accomplished the same goal by simply binding the HtmlTabPanel to a Session scoped component. For example:


            @Name("componentState")
            @Scope(ScopeType.SESSION)
            public ComponentState implements Serializable {
                private HtmlTabPanel someTabPanel;
            
                ...public getter/setter
            
            }
            



            and the component...


            <rich:tabPanel switchType="ajax" 
               binding="#{componentState.someTabPanel}">
            ...etc.
            



            Now your component should remember which tab is selected..

            • 3. Re: Remembering state of tabPanel
              Ignas Lelys Newbie

              Hi,


              Do you still have this problem? What version of richfaces did you use? For me it happens with all newer than 3.2.0 versions, and with 3.2.0 it works fine, so i suppose it is a bug...

              • 4. Re: Remembering state of tabPanel
                Anitha Raj Newbie
                Hello,

                I have encountered the same problem. I'm very new to seam. I have written a backing bean which is as shown below.



                @Name("controller")
                public class Controller implements java.io.Serializable {
                     
                private HtmlTabPanel tabPanel;
                private String selectedTab;



                public void setTabPanel(HtmlTabPanel tabPanel) {
                     this.tabPanel = tabPanel;
                }

                public HtmlTabPanel getTabPanel() {
                     return tabPanel;
                }

                public void setSelectedTab(String selectedTab) {
                     this.selectedTab = selectedTab;
                }

                public String getSelectedTab() {
                     return selectedTab;
                }
                }

                And in my xhtml file i'm passing the following value

                <rich:tabPanel id="tabs" switchType="ajax" binding="#{controller.tabPanel}" selectedTab="#{controller.selectedTab}">


                But I'm getting the following error.

                javax.el.PropertyNotFoundException: /Customer1.xhtml @37,118 binding="#{controller.tabPanel}": Target Unreachable, identifier 'controller' resolved to null

                and my stack trace is

                javax.faces.FacesException: javax.el.PropertyNotFoundException: /Customer1.xhtml @37,118 binding="#{controller.tabPanel}": Target Unreachable, identifier 'controller' resolved to null
                     at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:240)
                     at org.jboss.seam.jsf.SeamApplication.createComponent(SeamApplication.java:394)
                     at com.sun.facelets.tag.jsf.ComponentHandler.createComponent(ComponentHandler.java:224)
                     at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:139)
                     at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
                     at com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
                     at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
                     at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:337)
                     at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:307)
                     at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
                     at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
                     at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
                     at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
                     at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
                     at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
                     at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
                     at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
                     at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
                     at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
                     at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
                     at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
                     at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
                     at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
                     at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
                     at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
                     at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
                     at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
                     at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
                     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
                     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
                     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
                     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
                     at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
                     at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
                     at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
                     at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
                     at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
                     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
                     at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
                     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
                     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
                     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
                     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
                     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
                     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
                     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
                     at java.lang.Thread.run(Unknown Source)
                Caused by: javax.el.PropertyNotFoundException: /Customer1.xhtml @37,118 binding="#{controller.tabPanel}": Target Unreachable, identifier 'controller' resolved to null
                     at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:95)
                     at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:237)


                What changes i need to do? As i'm very new to all these i'm not able to proceed. please help.
                • 5. Re: Remembering state of tabPanel
                  Adrian Mitev Master

                  I do it with a conversation variable and it works like a charm for me. You have to remember that the variable you pass to selectedTab attribute must be mutable (i.e. not read-only).


                  #{conf.getUsrVal('admin.test.mainTab','1')}
                  


                  This looks read-only to me.

                  • 6. Re: Remembering state of tabPanel
                    Kevin Sapper Newbie

                    Hi Anitha,


                    you also forgot to define a scope for your seam component, e.g. @Scope(ScopeType.SESSION)