2016-01-08 5 views
0

Предположим, я пишу такой код:Как получить доступ к переменной, объявленной внутри выражения MVEL?

public class SomeClass() { 
    public static void main(String[] args) { 
    MVEL.eval("boolean boolVar = 2<3;"); 
    } 
} 

Теперь можно получить доступ к этой переменной boolVar в коде Java в любом месте. Пример: Могу ли я выводить значение boolVar с помощью

System.out.print(boolVar); 

в основном методе чуть ниже MVEL линии.

+0

@ Анкур-Singhal: Можете ли вы помочь? – Anuj

+0

yep, помог u ... –

+0

@ ankur-singhal спасибо mate .. – Anuj

ответ

1

Помните, что делать так, как указано выше, boolean boolVar становится локальной переменной, а MVEL не может скомпилировать его.

1.) Необходимо передать объект класса.

2.) Создайте boolean свойство в классе и назначьте его.

Экспрессия быть оценены: MVEL.eval("obj.output = 2<3;", map);

Пожалуйста, попробуйте ниже код: -

import java.util.HashMap; 
import java.util.Map; 

import org.mvel2.MVEL; 

public class SomeClass { 

    private boolean output; 

    public boolean isOutput() { 
     return output; 
    } 

    public void setOutput(boolean output) { 
     this.output = output; 
    } 

    public static void main(String[] args) { 
     SomeClass myObj = new SomeClass(); 
     Map<String, Object> map = new HashMap<String, Object>(); 
     map.put("obj", myObj); 

     MVEL.eval("obj.output = 2<3;", map); 
     System.out.println(myObj.isOutput()); 

     MVEL.eval("obj.output = 2>3;", map); 
     System.out.println(myObj.isOutput()); 

    } 
} 

выход

true 
false 
Смежные вопросы