Jboss Drools模板替换对象属性赢得';行不通

Jboss Drools模板替换对象属性赢得';行不通,jboss,drools,mvel,Jboss,Drools,Mvel,背景: 我正在尝试编写一个JBossDrools模板,用于测试对象的值是否为null、空或有效 持有该值的属性是一个变量,具体取决于$PITCRACT值 例如,如果$pitCaract=='C'=>$valueProperty=valeurItemChaine 所以在我的模板中,我想测试itemDataCheck.valeurItemChaine 这是我到目前为止所做的尝试 template header $pitCaract $valueProperty p

背景: 我正在尝试编写一个JBossDrools模板,用于测试对象的值是否为null、空或有效

持有该值的属性是一个变量,具体取决于$PITCRACT值

例如,如果
$pitCaract=='C'=>$valueProperty=valeurItemChaine

所以在我的模板中,我想测试
itemDataCheck.valeurItemChaine

这是我到目前为止所做的尝试

    template header
    $pitCaract
    $valueProperty


    package fr.xxx.validation;
    /*created on: Jun 20, 2017*/
    import fr.xxx.fides.dashboard.questionnaire.api.models.items.ItemData;
    import fr.xxx.fides.dashboard.questionnaire.api.models.types.Item;
    import  fr.xxx.fides.dashboard.questionnaire.api.checks.QuestionnaireItemException;
    import fr.xxx.fides.dashboard.questionnaire.api.ExceptionMessage;

    template "Blocking Objects check"

    rule "pre-check of blocking @{$pitCaract}  @{row.rowNumber}"
    auto-focus true
    agenda-group "validate"
    dialect "mvel" 
    salience 100
        when
            $item: Item(
                        itemProperty.pitCaract== "@{$pitCaract}",   
                        itemProperty.isMandatory
                    )

            Boolean(booleanValue ==true ) from  nullOrEmptyStr($item.itemDataCheck.@{$valueProperty} )
---------------------------------------------------------------^ this line
        then
          $item.setQuestionnaireItemException(new QuestionnaireItemException(ExceptionMessage.Blocking_item ,QuestionnaireItemException.ERROR ) );
          delete($item);
    end

    end template


    function boolean nullOrEmptyStr(Object o)
    {
        System.out.println("nullOrEmptyStr:"+o);
        return o==null || o.toString().trim().isEmpty();
    }
我收到一条类似的错误消息

[错误:无法使用严格模式解析方法: java.lang.Object.valeurItemChaine()][Near:{…nullOrEmptyStr( $item.itemDataCheck.valeurItemChaine)…}]

我试过了

$item: Item(
                            itemProperty.pitCaract== "@{$pitCaract}",   
itemDataCheck!.@{$valueProperty}.toString().trim().isEmpty(),
                            itemProperty.isMandatory
                        )

但要想让它发挥作用,运气不好

唯一有效的解决方案是
itemDataCheck.@{$valueProperty}==null
,但这还不够,因为值可能是空字符串


感谢您的帮助

Item.itemDataCheck及其类是如何定义的?@laune thay是简单的POJO,Item有一个名为itemDataCheck的成员。请提供代码如何编写,仅限相关成员。
$item: Item(
                                itemProperty.pitCaract== "@{$pitCaract}",   
    nullOrEmptyStr(itemDataCheck!.@{$valueProperty}),
                                itemProperty.isMandatory
                            )