Jexl从树上获得父母

时间:2019-05-21 19:46:01

标签: java jexl

简而言之:如何在提供的类没有的Jexl表达式中使用方法调用?我需要以某种方式伪造。 使用JexlContext,我可以在实际数据类上添加包装器,但仅用于根级别。是JexlUberspect我在寻找什么吗?

我的输入是一棵嵌套树,例如具有一系列地址类别的雇员类别。换句话说,一个雇员可以有两个地址。

转发表达式没有问题,例如jexl.createExpression(“ address [0] .city”);

但是,如果我在一个地址内并且想访问员工级别怎么办? 喜欢 address_line2 = jexl.createExpression(“邮政编码+ =城市”); address_line1 = jexl.createExpression(“ getParent()。firstname + = getParent()。lastname”);

麻烦的是,地址类没有getParent()方法来返回该地址所属的员工。

如何使此类getParent()出现?

一个选择显然是更改类,以便它们具有getParent()方法。但是我无法控制树类,它是Avro GenericRecord。 因此,我需要将所有值都复制到一个新类中,以便将getParent()方法添加到所有嵌套级别。太贵了。

使用上下文将起作用。在上下文中,我可以添加一个指向雇员的变量“父母”。但仅适用于一个级别。像“ getParent()。getParent()。xyz”之类的表达式不会。该上下文仅用于首次访问,返回实际的Java对象,并且该对象再次没有getParent()方法。

我想知道是否可以使用JexlUberspect。 有什么想法吗?

0 个答案:

没有答案