Ejecución de JSF página de Error: no se pudo analizar la expresión [${LogModel.getLogList()}]?

Estoy usando jsf 2 junto con tomcat 6, y estoy tratando de ejecutar este código, que se encuentra en una .página xhtml que tengo:

    <h:dataTable value="${LogModel.getLogList()}" var="c"
            styleClass="order-table"
            headerClass="order-table-header"
            rowClasses="order-table-odd-row,order-table-even-row"
        >

Tengo la clase logmodel y el método getLogList(), sin embargo me sale este error al iniciar la página:

/testLog.xhtml @20,8 value=»${LogModel.getLogList()}» no se pudo analizar la expresión [${LogModel.getLogList()}]

Aquí está el log completo del problema:

javax.faces.view.facelets.TagAttributeException: /testLog.xhtml @20,8 value="${LogModel.getLogList()}" Failed to parse the expression [${LogModel.getLogList()}]
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401)
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351)
at com.sun.faces.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:107)
at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:398)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:159)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.ELException: Failed to parse the expression [${LogModel.getLogList()}]
    at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:146)
    at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:172)
    at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:216)
    at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
    at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:385)
    ... 34 more
Caused by: org.apache.el.parser.ParseException: Encountered " "(" "( "" at line 1, column 22.
Was expecting one of:
    "}" ...
    "." ...
    "[" ...
    ">" ...
    "gt" ...
    "<" ...
    "lt" ...
    ">=" ...
    "ge" ...
    "<=" ...
    "le" ...
    "==" ...
    "eq" ...
"!=" ...
"ne" ...
"&&" ...
"and" ...
"||" ...
"or" ...
"*" ...
"+" ...
"-" ...
"/" ...
"div" ...
"%" ...
"mod" ...

at org.apache.el.parser.ELParser.generateParseException(ELParser.java:2142)
at org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:2024)
at org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:147)
at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:43)
at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:114)
... 38 more

Su ayuda sería muy apreciada! Gracias

InformationsquelleAutor Curious | 2012-06-11

2 Kommentare

  1. 4

    El sintaxis ${LogModel.getLogList()} sólo es compatible desde EL 2.2 que va junto con Servlet 3.0. Pero estamos usando el viejo Tomcat 6 servidor que es un Servlet 2.5 contenedor que implica EL 2.1. Usted necesita usar el normal, EL 2.1 sintaxis a continuación.

    ${LogModel.logList}

    Si realmente insistir en el uso de la nueva EL 2.2 sintaxis de invocación de métodos de acción, entonces siempre se puede instalar JBoss EL como se describe en esta respuesta: Invocar métodos directos o métodos con argumentos /variables /parámetros en EL sin Embargo, esto no tiene ningún sentido que un simple método getter, que podría ser que se accede por una más simple, EL de la sintaxis.

    Un gran error entre los entrantes es que ellos piensan que este nuevo EL 2.2 sintaxis es específico para JSF 2.0. Pero esto es así, en realidad no es cierto. Esta confusión es causada debido a que tanto EL 2.2 y JSF 2.0 son parte de Java EE 6, pero JSF 2.0 sí es compatible con Java EE 5 (Servlet 2.5, EL 2.1, etc).

    • muchas gracias, he hecho tu respuesta como la mejor, porque es muy comprehansive 🙂 aunque el otro estaba completamente a la derecha. De todos modos, el problema de «error de análisis» han ido, pero yo no sé cómo probarlo, esto es lo que hice: he puesto este código en el .xhtml archivo <h2><h:outputText id=»salida» value=»#{logBean.sayWelcome}» /></h2> para probar esta función en logbean de la clase: public String getSayWelcome(){ //comprobar si es null? return «Ajax mensaje : Bienvenido «; } sin embargo, nada se devuelve 🙁 en la pantalla.
  2. 1

    1) es #, no $

    2) Eliminar los corchetes () y la get. Utiliza las propiedades, no los métodos (incluso si usted necesita para definir en su clase).

    3) probablemente, el frijol nombre también debe comenzar con minúscula (tiene acceso a un objeto, no una clase).

    value="#{logModel.logList}" 
    • Muchas gracias, funcionó a la perfección, he actualizado mi tomcat 7 y en la invocación del método ha funcionado 🙂

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea