我试图在 Java bean 的主体上设置一个属性,该属性构成通过 Camel 路由传输的消息。我尝试了各种方法,例如
<route>
...
..
<transform>
<simple>${body.label} = ${property.label}</simple>
</transform>
...
..
</route>
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,它${body}是一个带有setLabel(String label)方法的 Java bean,它${property.label}是通过其他方式在另一个路由中设置的。在这个例子中,结果不是想要的(我明白为什么),即在转换之后,消息的正文被替换为${body.label} = ${property.label}字符串。
我目前的解决方法是将转换器手动编码为 Spring bean 并在代码中设置 Java bean 的标签属性,但我想找出是否有更简单/更智能的方法来实现这一点,最好是在 XML DSL 中我用什么?
问候,奥拉
我不确定是否可以使用simple,但您可以使用groovy:
<setBody>
<groovy>request.body.label = exchange.getProperty('label')
return request.body
</groovy>
</setBody>
Run Code Online (Sandbox Code Playgroud)