1

http://commons.apache.org/jexl/reference/syntax.html#Literalsに記載されているように、 JEXL
2.1.1
を使用しています。リテラル サフィックス 'h' を使用しています。

JexlEngine expressionFactory = new JexlEngine();
JexlContext context = new MapContext();
context.set ( "a", new BigDecimal( "0.0002" ));
Expression expression = expressionFactory.createExpression(" a > 42.0h "  );
boolean result=(Boolean)expression.evaluate( context );

私は例外を下回っています

org.apache.commons.jexl2.JexlException$Parsing: h@1:24 parsing error near '... , missing  ...'
at             org.apache.commons.jexl2.parser.JexlParser.jjtreeCloseNodeScope(JexlParser.java:126)
at org.apache.commons.jexl2.parser.Parser.ExpressionStatement(Parser.java:274)
at org.apache.commons.jexl2.parser.Parser.Statement(Parser.java:140)
at org.apache.commons.jexl2.parser.Parser.JexlScript(Parser.java:72)
at org.apache.commons.jexl2.parser.Parser.parse(Parser.java:24)
at org.apache.commons.jexl2.JexlEngine.parse(JexlEngine.java:1248)
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:435)
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:419)
4

1 に答える 1

1

ドキュメントのバグのようです。正しい10進数のサフィックスは「B」(「H」の代わり)です
正しい大きな整数のサフィックスは「H」(「B」の代わり)
これは、ASTNumberLiteral.javaを参照することで明確に確認できます。

この問題を提起しましたhttps://issues.apache.org/jira/browse/JEXL-141

于 2012-11-09T08:18:32.307 に答える