【问题标题】:Mule 3.2. How to Evaluate Empty Session Variable in Flow?骡子 3.2。如何评估流中的空会话变量?
【发布时间】:2012-09-05 03:53:59
【问题描述】:

如何检查我的会话变量在此 CHOICE 中是否为空或为空 它不适合我。

    <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

【问题讨论】:

    标签: session groovy mule evaluator


    【解决方案1】:

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

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

    【讨论】:

    • 如果变量不为空,但实际上没有设置,“.”表示法会抛出异常。要处理未设置的变量,您可以使用
    • 正确:如果存在变量可能不存在的风险,sessionVars['countryCode'] 是要走的路。
    【解决方案2】:

    您使用了无效的 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 还是空

    【讨论】:

    • 感谢丹尼尔的帮助,但这并不能解决我的问题。如果该值为空字符串,则不会捕获它。
    • 在我的答案中添加了空字符串条件,它应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多