Apache camel Camel Velocity模板-访问java对象属性
我有一条使用速度模板的驼峰路线,在主体中我有一个定义如下的对象:Apache camel Camel Velocity模板-访问java对象属性,apache-camel,velocity,Apache Camel,Velocity,我有一条使用速度模板的驼峰路线,在主体中我有一个定义如下的对象: class MailImpl extends AbstractMail{ private BodyContext bodyContext; public BodyContext getBodyContext() { return bodyContext; } public void setBodyContext(BodyContext bodyContext) {
class MailImpl extends AbstractMail{
private BodyContext bodyContext;
public BodyContext getBodyContext() {
return bodyContext;
}
public void setBodyContext(BodyContext bodyContext) {
this.bodyContext = bodyContext;
}
private String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
@Override
public String toString() {
return "MailImpl{" +
"bodyContext=" + bodyContext +
'}';
}
}
class BodyContext{
private String value;
public BodyContext(String value) {
this.value = value;
}
public BodyContext() {
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "BodyContext{" +
"value='" + value + '\'' +
'}';
}
在velocity模板中,我希望访问MailImpl对象属性,例如,我使用${body.test}和${body.bodyContext.value},但velocity模板不转换这些值(它返回字符串${body.test}和${body.bodyContext.value})
一种解决方案是为我需要在模板中使用的每个值创建标题,但由于我的路线是动态的(我根据标题选择velocity template),我希望访问velocity上下文中的body属性。这可能吗?您可以通过设置消息头
“CamelVelocityContext”
(自Camel v2.14以来)来设置自定义Velocity上下文。骆驼餐厅:
你会得到:
Dear Willem. You ordered item 7 on Monday.
Dear ${headers.name}. You ordered item ${exchange.properties.item} on ${body}.
Dear Willem. You ordered item 7 on Monday.