有没有可能设置一个对象的响应体,并传入一个camel头属性。我可以在处理器中实现这一点,但我宁愿在路由线上做。
.setBody(constant(
new Foo()
.withOne("HelloWorld")
.withTwo(simple("Header property is ${header.uniqueProperty}").toString())
))
使用上面的代码,我得到的响应为:
<foo>
<one>HelloWorld</one>
<two>Header property is ${header.uniqueProperty}</two>
</foo>
这是我的POJO
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {
private String one;
private String two;
public String getOne() {
return one;
}
public void setOne(final String one) {
this.one = one;
}
public String getTwo() {
return two;
}
public void setTwo(final String two) {
this.two = two;
}
public Foo withOne(final String one) {
setOne(one);
return this;
}
public Foo withTwo(final String two) {
setTwo(two);
return this;
}
}
1条答案
按热度按时间ruarlubt1#
constant()
可能不适合您,因为您可能希望对每个经过的交换进行动态评估。由于您需要将body设置为新示例化的对象,因此您需要一种能够实现此功能的机制。您提到您希望避免处理器,但我想指出在路由中完成此操作是多么简单:编辑:实际上这不是一个处理器,我们只是传递一个lambda(
Function
)给setBody()
。如果您在Spring环境中,则可以使用Spring表达式语言: