我试图在构成通过Camel路由传输的消息的Java bean的主体上设置属性。我尝试了各种方法,例如
<route>
...
..
<transform>
<simple>${body.label} = ${property.label}</simple>
</transform>
...
..
</route>
在这种特殊情况下,${body}
是一个带有setLabel(String label)
方法的Java bean,${property.label}
是通过其他路由中的其他方式设置的。在这个例子中,结果不是所希望的(我理解为什么),即在变换之后,消息的主体被${body.label} = ${property.label}
字符串替换。
我目前的解决方法是手动将变换器编码为Spring bean并在代码中设置Java bean的label属性,但我想知道是否有更简单/更智能的方法来实现这一点,最好是用XML DSL是我用的?
问候,奥拉
答案 0 :(得分:4)
我不确定是否可以使用simple
,但您可以使用groovy
执行此操作:
<setBody>
<groovy>request.body.label = exchange.getProperty('label')
return request.body
</groovy>
</setBody>
答案 1 :(得分:0)
也许它可以在未来帮助某人:
据我所知,您可以使用标准的 Java 方法,并在正文中使用 setter 和 getter:
.split(body())
.setBody(simple("${body.setLogin('TEST')}"))
.end()
它在 <split></split>
内工作。也许在另一个街区内。