У меня небольшая проблема в Mule. Я использую запрос Select SQL следующим образом:
<jdbc-ee:query key="RetriveQuery" value="Select NAME,ID from getData where ID=111 "/>
Теперь отсюда я получу значения, используя MEL, например #[message.payload[0].NAME]
и
#[message.payload[0].ID]
Теперь может случиться так, что ID=111
не существует. Итак, в этом случае, как я могу проверить, вернул ли запрос пустую полезную нагрузку или не использовал MEL??..
До сих пор я пробовал с выбором маршрутизатора следующим образом:
<choice doc:name="Choice">
<when expression="#[message.payload[0].ID == null]">
//Then print in logger like Sorry!! Data not available
Else Распечатать данные в регистраторе с помощью MEL
Всякий раз, когда я использую это, я получаю следующее исключение: -
Exception stack is:
1. Index: 0, Size: 0 (java.lang.IndexOutOfBoundsException)
java.util.ArrayList:604 (null)
2. [Error: message.payload[0].ID: array index out of bounds.]
[Near : {... message.payload[0].ID == null ....}]
^
[Line: 1, Column: 1] (org.mule.mvel2.PropertyAccessException)
org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer:426 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/mvel2/PropertyAccessException.html)
3. Execution of the expression "message.payload[0].ID == null" failed. (org.mule.api.expression.ExpressionRuntimeException)
org.mule.el.mvel.MVELExpressionLanguage:202 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html)
4. Execution of the expression "message.payload[0].ID == null" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: ArrayList (org.mule.api.MessagingException)
org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor:32 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at org.mule.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getCollectionProperty(ReflectiveAccessorOptimizer.java:776)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
Пожалуйста, помогите .. Как я могу узнать, существует ли ID или нет, используя MEL ???