Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel Camel Velocity模板-访问java对象属性_Apache Camel_Velocity - Fatal编程技术网

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.