簡體   English   中英

您可以將null傳遞給Mule中的invoke組件嗎?

[英]Can you pass null into an invoke component in Mule?

我正在嘗試以下操作:

 <invoke object-ref="importsManager" method="logImportError" methodArguments="#[flowVars['jobConfig']],#[flowVars.['importRecord']], #[exception], 'ERROR'" doc:name="Log Import Error"/>

上面的flowVars可以為null。 如果是這樣,我似乎無法將它們傳遞給invoke組件。 我在上面做的事情有什么問題嗎,或者確實不能將null傳遞給調用組件?

使用當前的Mule實現,您將無法傳遞空值來調用組件。 當m子執行“調用”組件時,在內部使用以下方法轉換參數。 InvokerMessageProcessor類中提供以下方法。 在這里,“ arg”是您要傳遞的值,“ type”是您要為其分配值的類。 執行arg.getClass()語句時,您將看到NullPointerException,因為arg值為null。 必須修補此方法以檢查是否為null並避免NullPinterException。

private Object transformArgument(Object arg, Class<?> type) throws TransformerException
{
    if (!(type.isAssignableFrom(arg.getClass())))
    {
        DataType<?> source = DataTypeFactory.create(arg.getClass());
        DataType<?> target = DataTypeFactory.create(type);
        // Throws TransformerException if no suitable transformer is found
        Transformer t = muleContext.getRegistry().lookupTransformer(source, target);
        arg = t.transform(arg);
    }
    return arg;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM