You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel Simple语法异常:判断Map键是否在列表时报错

Apache Camel Simple语言分支逻辑语法错误解决

问题原因

你使用的in操作符语法不符合Apache Camel Simple语言的规范:

  • Simple语言中in操作符的列表必须用圆括号包裹,而非方括号
  • 列表元素之间不能加空格,逗号需紧跟元素,否则会触发语法解析异常

正确解决方案

方案1:修正in操作符语法

将方括号改为圆括号,并去掉元素间的空格:

.when(simple("${body.key} in (123,456)"))

方案2:使用Java表达式替代(更直观)

如果对Simple语言语法不熟悉,直接用Java表达式实现分支判断更不易出错:

import java.util.Arrays;

// ...

.when(exchange -> {
    Integer key = (Integer) exchange.getIn().getBody(Map.class).get("key");
    return Arrays.asList(123, 456).contains(key);
})

方案3:使用contains的正确姿势

若要使用contains,需将目标列表放入Exchange属性或直接构建集合,再检查包含关系:

// 先将列表存入Exchange属性
.setProperty("targetKeys", constant(Arrays.asList(123, 456)))
// 再用contains判断
.when(simple("${exchangeProperty.targetKeys} contains ${body.key}"))

内容的提问来源于stack exchange,提问作者Conor-A McMeel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:27:14