2016-03-17 12 views
0

Этого код используется для работы под jexl2Jexl3 исключения неразрешимого свойства при использовании перечисления

public enum Gender { MALE, FEMALE}; 

public static void main(String[] args) throws ClassNotFoundException { 
    JexlEngine jexl = new JexlEngine(); 
    Record r = new Record(); 
    r.setHeader(new RecordHeader()); 
    JexlContext jc = new MapContext(); 
    jc.set("r", r); 
    jc.set("com.sytrue.objects.Gender", Gender.class); 
    Expression e = jexl.createExpression("r.header.gender=com.sytrue.objects.Gender.FEMALE"); 
    System.out.println(e.evaluate(jc)); 
} 

но под jexl3 он бросает исключение:

public static void main(String[] args) throws ClassNotFoundException { 
    JexlEngine jexl = new JexlBuilder().create(); 
    Record r = new Record(); 
    r.setHeader(new RecordHeader()); 
    JexlContext jc = new MapContext(); 
    jc.set("r", r); 
    jc.set("com.sytrue.objects.Gender", Gender.class); 
    JexlExpression e = jexl.createExpression("r.header.gender=com.sytrue.objects.Gender.FEMALE"); 
    System.out.println(e.evaluate(jc)); 
} 

Исключение составляет:

Exception in thread "main" org.apache.commons.jexl3.JexlException$Property: [email protected]:42 unsolvable property 'FEMALE' 

Я сделал это для работы с использованием метода valueOf:

JexlExpression e = jexl.createExpression("r.header.gender=com.sytrue.objects.Gender.valueOf('FEMALE')"); 

Похоже, что я больше не могу обращаться к типу перечисления в jexl3. Есть ли какой-либо причине это больше не работает, или это ошибка

ответ

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

  • Нет связанных вопросов^_^