如何使用Drools(mvel)将元素添加到数组中
我需要在带有Drools的exist数组中插入一个新值。我的例子是:如何使用Drools(mvel)将元素添加到数组中,drools,mvel,Drools,Mvel,我需要在带有Drools的exist数组中插入一个新值。我的例子是: rule "insert new address" dialect "java" when $data : Data( source.address != null) then Address address = (Address) $data.source.address System.out.println("Element: "+a
rule "insert new address"
dialect "java"
when
$data : Data( source.address != null)
then
Address address = (Address) $data.source.address
System.out.println("Element: "+address );
$data.target.addressList.add(address);
end
发生的错误如下:
规则中规则“插入新地址”的异常执行结果:[错误:$data.target.addressList.add(address):null]
编辑:添加模型
public class Data {
private Source source;
private Client target;
}
public class Source {
...
private Address address;
}
public class Client {
...
private List<Address> addressList;
}
公共类数据{
私人来源;
私人客户目标;
}
公共类源{
...
私人地址;
}
公共类客户端{
...
私人名单地址名单;
}
在回答标题中的问题时,即如何向数组中添加元素,答案基本上是“与Java中的方法相同”
要回答您实际提出的问题(没有数组),您的错误实际上是一个NullPointerException,或者是另一个无法修改字段的指示符(例如不可变列表)
这:
表示$data.target
或$data.target.addressList
为空,或者可能$data.target.addressList
为不可变列表
确保任何“目标”都已初始化,并且其“地址列表”也已初始化为可变列表类型。什么数组?您的代码中没有数组。如果您输入:System.out.println(“Size”+$data.target.addressList.Size());应用程序写“3”(这是正确的,因为存在3个元素)我在帖子中添加了模型来查看它。你没有说明这些模型是如何初始化的,何时初始化的,也没有说明它们的getter是什么。这些模型是DTO,来自JSON之类的客户端。我发现了问题所在。问题在于:inmmutability的java.lang.UnsupportedOperationException。我用this.addressList=newArrayList(this.addressList)创建了一个方法;然后,添加工作。
Error: $data.target.addressList.add(address): null]