如果我尝试使用 getter 访问 java bean 的属性,它会给我错误,而直接使用 bean 属性可以正常工作。我知道直接使用 bean 属性是推荐的方式,如文档中所述。但是,在这种情况下,出于某些特定原因,我更喜欢使用 getter。
这是规则文件和我得到的错误。希望能提供有关我为什么会出现这种奇怪行为的任何线索。
规则文件
package test.rules
import java.lang.Math;
import test.MatFact;
import test.MatHotelAlternative;
import test.MatHotelItem;
dialect "mvel"
rule "0"
salience 0
when
$item: MatHotelItem()
$alt: MatHotelAlternative( processed == false
&& (getStarRating() == "*")
)
then
modify ($alt) {
// some actions here
}
end
错误
[16,26]: [ERR 101] Line 16:26 no viable alternative at input ')' in rule "0" in pattern MatHotelAlternative
[16,28]: [ERR 102] Line 16:28 mismatched input '==' expecting ')' in rule "0" in pattern MatHotelAlternative
[17,1]: [ERR 102] Line 17:1 mismatched input ')' expecting 'then' in rule "0"
相关课程
垫酒店替代品
public class MatHotelAlternative extends MatItemAlternative<Hotel>
{
public String getStarRating()
{
return alternative.getStarRating();
}
}
MatItemAlternative
public abstract class MatItemAlternative<T extends HolidayItem>
{
private boolean processed;
protected T alternative;
public MatItemAlternative( T alternative )
{
this.alternative = alternative;
}
public boolean isProcessed()
{
return processed;
}
public void setProcessed( boolean processed )
{
this.processed = processed;
}
}