[英]Drools Rule Expression : Access Nested class data member
Below is the structure of my classes: 以下是我的课程结构:
public class Address {
private String street;
private int phone;
public void setStreet(String s){street = s;}
public void setPhone(int p){phone = p;}
public String getStreet(String s){return street;}
public int getPhone(){ return phone; }
}
public class Borrower {
Address adr = new Address();
public void setAddress(String s, int p) {
adr.setStreet(s);
adr.setPhone(p);
}
public Address getAddress() { return adr; }
}
Drools Expression I am using :- Drools表达我正在使用: -
rule "Nested Address"
salience -10
when
$bo : Borrower(Address.street.equals("USA") && Address.phone != 717)
$loanApp : LoanApplication()
then
$loanApp.addFeedbackMessage(FeedbackMessages.LOCATION_NOT_US);
System.out.println("Nested Address " + $bo.adr.street + ", Nested Phone " + $bo.adr.phone);
end
Above gives me Error : 上面给我错误:
Unable to Analyse Expression Address.street.equals("USA"):
Can someone please tell me what I am doing wrong? 有人可以告诉我我做错了什么吗?
you should be using the property name "address" (notice the lowercase a) and not the class Address. 你应该使用属性名称“地址”(注意小写字母a)而不是类地址。 so: 所以:
rule "Nested Address"
salience -10
when
$bo : Borrower(address.street.equals("USA") && address.phone != 717)
$loanApp : LoanApplication()
then
$loanApp.addFeedbackMessage(FeedbackMessages.LOCATION_NOT_US);
System.out.println("Nested Address " + $bo.adr.street + ", Nested Phone " + $bo.adr.phone);
end
You should be using "adr" (property name) instead of "Address" (class name): 您应该使用“adr”(属性名称)而不是“地址”(类名称):
rule "Nested Address"
salience -10
when
$bo : Borrower(adr.street.equals("USA") && adr.phone != 717)
$loanApp : LoanApplication()
then
$loanApp.addFeedbackMessage(FeedbackMessages.LOCATION_NOT_US);
System.out.println("Nested Address " + $bo.adr.street + ", Nested Phone " + $bo.adr.phone);
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.