0

私はTomcat6と一緒にjsf2を使用しており、私が持っている.xhtmlページにあるこのコードを実行しようとしています。

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

クラスlogmodelとメソッドgetLogList()がありますが、ページを起動すると次のエラーが発生します。

/testLog.xhtml @ 20,8 value = "$ {LogModel.getLogList()}"式の解析に失敗しました[$ {LogModel.getLogList()}]

問題の完全なログは次のとおりです。

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

よろしくお願いします!ありがとうございました

4

2 に答える 2

4

EL構文${LogModel.getLogList()}は、サーブレット3.0に付属するEL2.2以降でのみサポートされます。ただし、EL2.1を意味するサーブレット2.5コンテナである古いTomcat6サーバーを使用しています。次に、通常のEL2.1構文を使用する必要があります。

${LogModel.logList}

アクションメソッドを呼び出す新しいEL2.2構文の使用を本当に主張する場合は、次の回答で説明されているように、いつでもJBossELをインストールできます。直接メソッドまたはELで引数/変数/パラメーターを使用してメソッドを呼び出すただし、これは意味がありません。単純なEL構文でアクセスできる単純なgetterメソッド。

初心者の間での主な誤解は、この新しいEL2.2構文がJSF2.0に固有であると彼らが考えていることです。しかし、これは実際には真実ではありません。この混乱は、EL2.2とJSF2.0の両方がJavaEE 6の一部であるために発生しますが、JSF2.0自体はJavaEE 5(サーブレット2.5、EL 2.1など)と下位互換性があります。

于 2012-06-12T04:49:55.373 に答える
1

1)そうでは#なく、$

2)角かっこ()と。を削除しますget。メソッドではなくプロパティを使用しています(クラスでプロパティを定義する必要がある場合でも)。

3)おそらく、Bean名もlowerCaseで始まる必要があります(クラスではなくオブジェクトにアクセスしています)。

value="#{logModel.logList}" 
于 2012-06-11T22:28:11.550 に答える