JexlBuilder jexlBuilder = new JexlBuilder();
Map<String, Object> functions = new HashMap<>();
functions.put("name", new PriceFunction());
jexlBuilder.namespaces(functions);
JexlEngine jexlEngine = jexlBuilder.create();
OrderDto orderDto = new OrderDto();
List<OrderDto.OrderItemDto> orderItemDtos = new ArrayList<>();
orderItemDtos.add(new OrderDto.OrderItemDto(1, 2, "product1"));
orderItemDtos.add(new OrderDto.OrderItemDto(3, 4, "product2"));
orderDto.setOrderItems(orderItemDtos);
String expressionStr = "name:excute(order.orderItems)";
JexlExpression expression = jexlEngine.createExpression(expressionStr);
MapContext mapContext = new MapContext();
mapContext.set("order", orderDto);
Object evaluate = expression.evaluate(mapContext);
System.out.println(String.format("应支付金额:%s", evaluate));
jexl3表达式引擎
于 2023-03-16 16:16:00 首次发布
该文章演示了如何使用ApacheCommonsJexl3库来处理各种表达式,包括常量表达式、变量表达式、自定义函数以及三元和控制流表达式。示例中详细展示了如何构建JexlEngine,设置自定义函数并进行计算,以及如何在上下文中设置变量并求值。
摘要由CSDN通过智能技术生成