写入数组并获取Apache Camel中的元素长度

Kri*_*hna 1 spring apache-camel

作为Apache骆驼的菜鸟,我有两个问题.

  1. 我正在尝试使用camel解组一个csv文件,我的代码是稍后我需要将这些值转发到另一个路由中,我在那里访问它们

    $ {body [0]} ... $ {body [1]} ..等

如何确定元素是否存在,例如,

${body[0]}!=null. 
Run Code Online (Sandbox Code Playgroud)
  1. 我能够使用各种分隔符令牌化我的输入文件.例如,如果我尝试获得与上面相同的结果,我如何将所有令牌保存到某种类型的数组中,这样一旦我得到该数组,我可以稍后在某个数组中使用它.

请注意,我不能在这里使用Java,我只能使用spring dsl.

Pet*_*ler 5

访问列表的大小:

${body.size()}
Run Code Online (Sandbox Code Playgroud)

访问类型的列表元素的大小java.util.List:

${body[0].size()}
Run Code Online (Sandbox Code Playgroud)

访问数组的长度:

${body.length}
Run Code Online (Sandbox Code Playgroud)

但是,访问列表元素的数组长度不能正常工作(至少对于Camel 2.13.1):

${body[0].length}
Run Code Online (Sandbox Code Playgroud)

这将返回大小body而不是长度body[0].你可以groovy改用:

<groovy>request.body[0].length</groovy>
Run Code Online (Sandbox Code Playgroud)

供以后使用,将其存储body到属性中:

<setProperty propertyName="myProperty"><simple>${body}</simple></setProperty>
<log message="${property.myProperty}" />
Run Code Online (Sandbox Code Playgroud)

编辑: 我们无法访问列表元素的数组长度simple是一个错误.我开了一个Jira问题:CAMEL-7478.

编辑: CAMEL-7478现已修复.