7 Replies Latest reply on Jul 31, 2009 3:52 PM by roykachouh

    Custom EL Functions and JSF/Richfaces/Ajax4JSF

    roykachouh

      Has anyone had any success implmeneting a custom function using the richfaces/ajax4jsf framework?

      I am trying to simplify my development by creating a custom function that will return the size of a collection. Since the collection size method does not implement standard java bean practices.

      At first, I tried using the JSTL fn function as so: #{fn:length(TeamApi.teamsOwnedByAccount) gt 3}

      This seems to work only on a regular HTTP request. If the request is ajaxified using ajax4jsf I get a messages stating that the fn:length function is not found.

      I thought this might have to do with some issues between JSF and JSTL interoperability, so I creating my own function that does the same thing.

      However, the same issues arises...the function works on a regular request, but breaks with ajax4jsf request. Is there something with filter order that I am missing, or is it something else...


      <h:outputText value="Team Comments (${ltp:getCollectionSize(TeamApi.detailTeam.commentList)})" />
      


        • 1. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
          roykachouh

          btw...I am using Richfaces 3.3.1.GA

          • 2. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
            nbelaevski

            Hi,

            There are several functions shipped with RF, they work ok. Are you using JBoss AS? What exact message about function not found do you see?

            • 3. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
              roykachouh

              Hey, thanks for the reply!

              Yes I am using JBoss AS 4.2.2. The exact stacktrace is below...it looks like it is a classloading issue...

              I have my jsf_facelets.jar in WEB-INF/lib

              In fact, I will just include all the jars I have in my lib...

              antlr.jar
              asm.jar
              cglib.jar
              commons-beanutils.jar
              commons-collections-3.2.jar
              commons-collections.jar
              commons-dbcp-1.2.2.jar
              commons-digester.jar
              commons-lang.jar
              commons-logging.jar
              commons-pool-1.3.jar
              dom4j.jar
              gdata-appsforyourdomain-1.0.jar
              gdata-appsforyourdomain-meta-1.0.jar
              gdata-base-1.0.jar
              gdata-calendar-1.0.jar
              gdata-calendar-meta-1.0.jar
              gdata-client-1.0.jar
              gdata-client-meta-1.0.jar
              gdata-codesearch-1.0.jar
              gdata-codesearch-meta-1.0.jar
              gdata-contacts-1.0.jar
              gdata-contacts-meta-1.0.jar
              gdata-core-1.0.jar
              gdata-docs-1.0.jar
              gdata-docs-meta-1.0.jar
              gdata-media-1.0.jar
              gdata-photos-1.0.jar
              gdata-photos-meta-1.0.jar
              gdata-spreadsheet-1.0.jar
              gdata-spreadsheet-meta-1.0.jar
              gdata-youtube-1.0.jar
              log4j-1.2.13.jar
              spring.jar
              hibernate.jar
              velocity-1.5.jar
              velocity-tools-view-1.4.jar
              jbossmq-client.jar
              gdata-youtube-meta-1.0.jar
              hibernate-annotations.jar
              mysql-connector-java-5.0.8-bin.jar
              jug-asl-2.0.0.jar
              richfaces-api-3.3.1.GA.jar
              richfaces-impl-3.3.1.GA.jar
              richfaces-ui-3.3.1.GA.jar
              jsf-facelets.jar

              Here is the stack trace...

              
              javax.faces.FacesException: javax.el.ELException: /parks/widgets/parkCommentsWidget.xhtml @11,133 value="Park Comments (#{fn:length(ParkApi.createdPark.commentList)})": Function 'fn:length' not found
               at javax.faces.component.UIOutput.getValue(UIOutput.java:176)
               at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189)
               at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320)
               at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)
               at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
               at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:281)
               at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
               at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
               at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
               at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
               at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
               at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:123)
               at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:677)
               at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:548)
               at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
               at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:577)
               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.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               at com.asc.ltp.web.filters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:77)
               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               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.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
               at com.asc.ltp.web.filters.MyOpenSessionInViewFilter.doFilterInternal(MyOpenSessionInViewFilter.java:26)
               at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
               at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
               at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
               at com.asc.ltp.web.filters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:77)
               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(Thread.java:595)
              Caused by: javax.el.ELException: /parks/widgets/parkCommentsWidget.xhtml @11,133 value="Park Comments (#{fn:length(ParkApi.createdPark.commentList)})": Function 'fn:length' not found
               at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76)
               at javax.faces.component.UIOutput.getValue(UIOutput.java:173)
               ... 60 more
              09:03:04,638 ERROR [STDERR] java.lang.ClassNotFoundException: No ClassLoaders found for: com.sun.facelets.tag.jstl.fn.JstlFunction
              09:03:04,638 ERROR [STDERR] at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
              09:03:04,638 ERROR [STDERR] at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521)
              09:03:04,638 ERROR [STDERR] at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
              09:03:04,638 ERROR [STDERR] at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
              09:03:04,638 ERROR [STDERR] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
              09:03:04,638 ERROR [STDERR] at java.lang.Class.forName0(Native Method)
              09:03:04,638 ERROR [STDERR] at java.lang.Class.forName(Class.java:164)
              09:03:04,638 ERROR [STDERR] at org.apache.el.lang.FunctionMapperImpl$Function.getMethod(FunctionMapperImpl.java:147)
              09:03:04,638 ERROR [STDERR] at org.apache.el.lang.FunctionMapperImpl.resolveFunction(FunctionMapperImpl.java:53)
              09:03:04,638 ERROR [STDERR] at org.apache.el.parser.AstFunction.getValue(AstFunction.java:71)
              09:03:04,638 ERROR [STDERR] at org.apache.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:26)
              09:03:04,638 ERROR [STDERR] at org.apache.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:31)
              09:03:04,638 ERROR [STDERR] at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
              09:03:04,638 ERROR [STDERR] at javax.faces.component.UIOutput.getValue(UIOutput.java:173)
              09:03:04,638 ERROR [STDERR] at sun.reflect.GeneratedMethodAccessor632.invoke(Unknown Source)
              09:03:04,638 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              09:03:04,638 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.util.DevTools.writeAttributes(DevTools.java:240)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.util.DevTools.writeStart(DevTools.java:284)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.util.DevTools.writeComponent(DevTools.java:189)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.util.DevTools.writeComponent(DevTools.java:207)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.util.DevTools.writeComponent(DevTools.java:207)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.util.DevTools.debugHtml(DevTools.java:107)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.FaceletViewHandler.handleRenderException(FaceletViewHandler.java:677)
              09:03:04,638 ERROR [STDERR] at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:645)
              09:03:04,638 ERROR [STDERR] at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
              09:03:04,638 ERROR [STDERR] at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
              09:03:04,653 ERROR [STDERR] at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
              09:03:04,653 ERROR [STDERR] at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
              09:03:04,653 ERROR [STDERR] at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
              09:03:04,653 ERROR [STDERR] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at com.asc.ltp.web.filters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:77)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
              09:03:04,653 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
              09:03:04,653 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
              09:03:04,653 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
              09:03:04,653 ERROR [STDERR] at com.asc.ltp.web.filters.MyOpenSessionInViewFilter.doFilterInternal(MyOpenSessionInViewFilter.java:26)
              09:03:04,653 ERROR [STDERR] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at com.asc.ltp.web.filters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:77)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
              09:03:04,653 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
              09:03:04,653 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
              09:03:04,653 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
              09:03:04,653 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
              09:03:04,653 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
              09:03:04,653 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
              09:03:04,653 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
              09:03:04,653 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)
              
              


              • 4. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
                nbelaevski
                • 5. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
                  roykachouh

                  That did the trick thanks!!

                  • 6. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
                    roykachouh

                    Hey Nick! Again, thanks for the help on the issue with EL functions!

                    I have another question for you...I hope you are watching this topic. To cover myself, I will create another new topic, but I thought you might be able to help me because I was navigating some RichFaces code and saw your name on one of the classes that I was investigating (DragSupportHandler).

                    I am trying to extend the datascroller richfaces component. I want to add some of my own behavior to this component. So what I did was I added a component in my application library by extending the abstracttaglibrary as so...

                    public class LtpLibrary extends AbstractTagLibrary {
                    
                     public final static String Namespace = "http://mysite.com/core";
                    
                     public LtpLibrary() {
                     super(Namespace);
                    
                    
                     this.addComponent("ltpDataScroller",LtpDataScroller.COMPONENT_ID,"org.richfaces.DataScrollerRenderer",LtpDataScrollerHandler.class);
                    
                    
                     }
                    
                    }
                    
                    


                    Inside my custom LTP datascroller, I have a custom pagination handler attribute that gets set. The attribute gets sets fine on the initial request, however when I try to page, the attribute does not get set, and a null pointer exception is thrown as a result. I will add as much code as possible to make clear the issue.

                    My AjaxComponentHandler...
                    public class LtpDataScrollerHandler extends AjaxComponentHandler {
                    
                     private final TagAttribute scrollerListener;
                     private final TagAttribute paginator;
                     public LtpDataScrollerHandler(ComponentConfig config) {
                     super(config);
                     this.scrollerListener = this.getAttribute("scrollerListener");
                     this.paginator = this.getAttribute("paginator");
                     }
                    
                     @Override
                     protected UIComponent createComponent(FaceletContext ctx) {
                     return ctx.getFacesContext().getApplication().createComponent(LtpDataScroller.COMPONENT_ID);
                     }
                    
                     @Override
                     protected void setAttributes(FaceletContext ctx, Object obj) {
                     LtpDataScroller scroller = (LtpDataScroller)obj;
                     ExpressionFactory expressionFactory = ctx.getExpressionFactory();
                    
                     if(this.scrollerListener!=null){
                     MethodExpression expression = expressionFactory.createMethodExpression(ctx, scrollerListener.getValue(), null, new Class[] {DataScrollerEvent.class});
                     scroller.setScrollerListener(expression);
                     }
                     if(this.paginator!=null){
                     ValueExpression ve = expressionFactory.createValueExpression(ctx, paginator.getValue(), Paginator.class);
                     Paginator paginator = (Paginator) ve.getValue(ctx);
                     scroller.setPaginator(paginator);
                     }
                    
                    
                     }
                    
                     @Override
                     protected MetaRuleset createMetaRuleset(Class type) {
                     return super.createMetaRuleset(type);
                     }
                    }
                    


                    The class that extends the HTMLDataScroller...
                    public class LtpDataScroller extends HtmlDatascroller{
                    
                     public static final String COMPONENT_ID = "com.asc.ltp.web.components.LtpDataScroller";
                     private Paginator paginator;
                     @Override
                     public int getPageCount() {
                     int pageCount = 0;
                    
                     PaginationConfig config = new DefaultPaginationConfig(5,3);
                    
                     pageCount = paginator.determinePageCount(config);
                    
                     return pageCount;
                     }
                    
                     public Paginator getPaginator() {
                     return paginator;
                     }
                     public void setPaginator(Paginator paginator) {
                     this.paginator = paginator;
                     }
                    
                     /*@Override
                     public boolean isRendered() {
                     return paginator.shouldRender();
                     }*/
                    }
                    


                    Is there something I am missing? Why does my paginator attribute get set on the inital rendering, but does not for subsequent ajax requests?

                    Your help is really appreciated on this one...

                    • 7. Re: Custom EL Functions and JSF/Richfaces/Ajax4JSF
                      roykachouh

                      Nevermind the last one...i figured it out...

                      the component did not like when i overrode the following two methods of UIDatascroller...

                      public int getPageCount(UIData data);
                      public int getPageCount(UIData data, int rowCount, int rows) ;