3

以下の JSF スニペット:

<p:dataTable value="#{userbean.getAll()}" var="user">

次の例外をスローします。

Encountered "(" at line 1, column 18. Was expecting one of: "}" ... "." ... "[" ... ">" ... "gt" ... "<" ... "lt" ... ">=" ... "ge" ... "<=" ... "le" ... "==" ... "eq" ... "!=" ... "ne" ... "&&" ... "and" ... "||" ... "or" ... "*" ... "+" ... "-" ... "/" ... "div" ... "%" ... "mod" ... 
org.apache.el.parser.ParseException: Encountered "(" at line 1, column 18. 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.DeferredExpression(ELParser.java:113)
    at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:40)
    at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:93)
    at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:150)
    at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:194)
    at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
    at com.sun.faces.facelets.el.ELText$ELTextVariable.apply(ELText.java:203)
    at com.sun.faces.facelets.compiler.AttributeInstruction.apply(AttributeInstruction.java:101)
    at com.sun.faces.facelets.compiler.UIInstructionHandler.apply(UIInstructionHandler.java:141)
    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:196)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)

これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

13

これは、環境が EL 2.2 をサポートしていない場合に発生する可能性があります。このような括弧/引数を使用したダイレクト メソッドの呼び出し

value="#{userbean.getAll()}" 

サーブレット 3.0 と連携する EL 2.2 以降でのみサポートされます。この例外が発生した場合は、サーブレット 3.0 互換のコンテナにデプロイしていないか、 Web アプリケーションがweb.xmlサーブレット 3.0 に準拠していると宣言されていないか、/WEB-INF/libWeb アプリケーションに任意にダウンロードされたサーブレット コンテナ固有の JAR が散らばっていることを意味するだけです。 EL 2.2 に準拠していない、完全に異なるサーブレット コンテナーのメーカー/バージョンに由来するファイル。

基本的に2つの解決策があります:

  1. EL 2.1 互換の構文を使用します。これは、サーブレット 2.5 互換のコンテナーで機能します。

     value="#{userbean.all}" 
    
  2. Servlet 3.0 互換のコンテナー (Tomcat 7、Glassfish 3、JBoss AS 6 など) にアップグレードするか、Servlet 3.0web.xmlに準拠するように修正してください。

また、webapp にや friendsなどのサーブレットコンテナ固有のライブラリが含ま/WEB-INF/libていないことを絶対に確認する必要があります(この関連する質問も参照してください)。el-api.jar

これは JSF の問題ではないことに注意してください。/ package からではなくjavax.el/ packageから例外が発生しました。これは、ELの問題であることを意味します。基本的に、EL 構文が間違っていると言っています。予想もしていなかったところに遭遇。その後、予想される文字/演算子が明確にリストされます。org.apache.eljavax.facescom.sun.faces(

以下も参照してください。

于 2013-07-24T14:24:33.570 に答える