7 Replies Latest reply on Jul 15, 2007 6:07 AM by gavin.king

    Expression language enhancements do not work

    ebu

      Hi,
      Having

       <r:dataTable id="itemsTable"
       var="i"
       value="#{allItems}"
       >
       <f:facet name="header">
       <r:columnGroup>
       <r:column >
       <h:outputText value="Name" />
       </r:column>
       </r:columnGroup>
       </f:facet>
       <r:column>
       <h:commandButton id="select" value="#{i.name}" action="#{itemEditor.select(i)}" />
       </r:column>
       </r:dataTable>
      


      in facelet and
       <application>
       <view-handler>org.jboss.seam.ui.facelet.SeamFaceletViewHandler</view-handler>
       </application>
      


      in faces-config.xml i'm still getting

      om.sun.facelets.tag.TagAttributeException: /admin/item.xhtml @72,87 action="#{itemEditor.select(i)}" Error Parsing: #{itemEditor.select(i)}
       at com.sun.facelets.tag.TagAttribute.getMethodExpression(TagAttribute.java:144)
       at com.sun.facelets.tag.jsf.ActionSourceRule$ActionMapper.applyMetadata(ActionSourceRule.java:50)
       at com.sun.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:36)
       at com.sun.facelets.tag.MetaTagHandler.setAttributes(MetaTagHandler.java:62)
       at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:140)
       at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
       at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
       at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
       at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
       at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
       at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
       at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
       at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
       at com.sun.facelets.tag.ui.DefineHandler.apply(DefineHandler.java:58)
       at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:128)
       at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:306)
       at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:279)
       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.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:143)
       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:510)
       at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:553)
       at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
       at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:229)
       at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
       at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
       at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
       at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
       at java.lang.Thread.run(Thread.java:619)
      Caused by: javax.el.ELException: Error Parsing: #{itemEditor.select(i)}
       at com.sun.el.lang.ExpressionBuilder.createNodeInternal(Unknown Source)
       at com.sun.el.lang.ExpressionBuilder.build(Unknown Source)
       at com.sun.el.lang.ExpressionBuilder.createMethodExpression(Unknown Source)
       at com.sun.el.ExpressionFactoryImpl.createMethodExpression(Unknown Source)
       at com.sun.facelets.tag.TagAttribute.getMethodExpression(TagAttribute.java:141)
       ... 64 more
      Caused by: com.sun.el.parser.ParseException: Encountered "(" at line 1, column 20.
      Was expecting one of:
       "}" ...
       "." ...
       "[" ...
       ">" ...
       "gt" ...
       "<" ...
       "lt" ...
       ">=" ...
       "ge" ...
      



      Am i missing something?

      wbr, eugen.

        • 1. Re: Expression language enhancements do not work
          ebu

          looks like that ajax4jsf's view handler specified in web xml takes precedence:

           <context-param>
           <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
           <param-value>org.jboss.seam.ui.facelet.SeamFaceletViewHandler</param-value>
          </context-param>
          


          but even when seam handler is specified in faces-config only it's constructor is being called, so the object is created but never accessed.

          wbr, eugen.


          • 2. Re: Expression language enhancements do not work

             

            "ebu" wrote:
            looks like that ajax4jsf's view handler specified in web xml takes precedence

            I don't know the answer to your question, but just for your information: when using seam-gen then SeamFaceletViewHandler is commented-out (with a reference to Ajax4JSF) in the generated faces-config.xml, thus:
            <application>
             :
             <!-- Disabled when using Ajax4JSF -->
             <!--
             <view-handler>org.jboss.seam.ui.facelet.SeamFaceletViewHandler</view-handler>
             -->
             :
            </application>


            Arjan.

            • 3. Re: Expression language enhancements do not work
              ian_bailey

              I am getting this error as well with Seam 1.2.1GA.

              seam-gen seems to put the SaemFaceletViewHandler in the web.xml:

              ...
              <context-param>
               <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
               <param-value>
               org.jboss.seam.ui.facelet.SeamFaceletViewHandler
               </param-value>
              </context-param>
              ...
              


              However, I am still getting the same EL Parser exception:
              Caused by: com.sun.el.parser.ParseException: Encountered "(" at line 1, column 29.
              


              It looks like the SeamFaceletViewHandler isn't being called, but I'm not sure how to configure it AND keep using Ajax4JSF. Any pointers would be appreciated.

              • 4. Re: Expression language enhancements do not work
                dustismo

                I believe I remember that el-enhancements don't work in richfaces dataTable. (I've never gotten it to work in any case). Did you try it using a standard dataTable?

                • 5. Re: Expression language enhancements do not work
                  ian_bailey

                  I have been unable to use it in a outputText tag. For example:

                  <h:outputText value="#{myAction.process('a text param')}" />
                  


                  This give me the same exception.

                  • 6. Re: Expression language enhancements do not work
                    pmuir

                    You can't use extended EL in value bindings in Seam 1.2.1.GA (you can in Seam2)

                    • 7. Re: Expression language enhancements do not work
                      gavin.king

                      Right, Seam2 uses JSF 1.2 features and JBoss EL to give a *much* better implementation of the EL extensions.