Session 骡子3.2。如何计算流中的空会话变量?

Session 骡子3.2。如何计算流中的空会话变量?,session,groovy,mule,evaluator,Session,Groovy,Mule,Evaluator,如何在此选项中检查会话变量是否为null或空 这对我不起作用 <processor-chain doc:name="Processor Chain"> <choice> <when evaluator="groovy" expression="#[header:session:countryCode] != "> <logger me

如何在此选项中检查会话变量是否为null或空 这对我不起作用

    <processor-chain doc:name="Processor Chain">
        <choice> 
            <when evaluator="groovy" expression="#[header:session:countryCode] != ">                    
                <logger message="Valid Country Id" level="INFO" doc:name="Logger"/>                 
            </when>            
            <otherwise>
                <logger message="Invalid Country Id" level="INFO" doc:name="Logger"/>                   
            </otherwise>
        </choice>           
    </processor-chain>


我也试过了还有!=null

您使用的groovy表达式无效。应该是:

    ...
    <when expression="message.getProperty('countryCode',org.mule.api.transport.PropertyScope.SESSION)!=null 
                      || message.getProperty('countryCode',org.mule.api.transport.PropertyScope.SESSION)!=''"
    evaluator="groovy">
    ...
。。。
...

您也可以使用Header evaluator访问属性,但我不确定您是否可以通过计算确定它是null还是空的

如果您使用的是Mule 3.3.x,最好使用MEL而不是Groovy:

<when expression="#[org.mule.util.StringUtils.isNotEmpty(sessionVars.countryCode)]">


谢谢你的帮助,丹尼尔,但这并不能解决我的问题。如果值是空字符串,它将无法捕获它。在我的答案中添加了空字符串条件,如果变量不是空的,但实际上没有设置,“.”符号将引发异常。要处理未设置的变量,也可以使用True:如果存在变量不存在的风险,
sessionVars['countryCode']
是一种方法。