2010-07-09 2 views
0

Je fais rnd pour JEXL mais j'ai eu l'exception pour le programme ci-dessous;Le programme JEXL a ";" exception

 String strDuration = "4560"; 
     long lDuration = Long.parseLong(strDuration); 
     String theExpression = "" + 
       "if(lDuration > 500)" + 
       " return true;" + 
       "else" + 
       " return false;"; 

     Expression e = jexl.createExpression(theExpression); 
     JexlContext context = new MapContext(); 
     context.set("lDuration", lDuration); 
     Boolean result =(Boolean) e.evaluate(context); 
     System.out.println("The answer : " + result); 

Exception: Causée par: org.apache.commons.jexl2.parser.ParseException: @ 1 déclaration Ambigu: 30, manquant ';' entre les expressions

Quelqu'un peut-il m'aider à afficher la sortie que je veux (le booléen)?

Merci d'avance.

Répondre

1

Ici, vous allez:

public static void main(String[] args) { 
    String strDuration = "4560"; 
    long lDuration = Long.parseLong(strDuration); 
    String theExpression = "(lDuration > 500) ? true : false;"; 
    JexlEngine jexl = new JexlEngine(); 
    Expression e = jexl.createExpression(theExpression); 
    JexlContext context = new MapContext(); 
    context.set("lDuration", lDuration); 
    Boolean result = (Boolean) e.evaluate(context); 
    System.out.println("The answer : " + result); 
    } 

Edit: Pour être clair, le problème est votre utilisation de l'instruction de retour, il semble ne pas être pris en charge par JEXL.

+0

Correct et résolu –

Questions connexes