Этого код используется для работы под 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. Есть ли какой-либо причине это больше не работает, или это ошибка