[英]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.