Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
Java 骆驼+;Velocity:如何将事物置于Velocity上下文中_Java_Apache Camel_Velocity - Fatal编程技术网

Java 骆驼+;Velocity:如何将事物置于Velocity上下文中

Java 骆驼+;Velocity:如何将事物置于Velocity上下文中,java,apache-camel,velocity,Java,Apache Camel,Velocity,我有很多velocity模板可以用于另一个项目(使用Camel) 我无法理解如何在velocity上下文中插入一些自定义对象…我的模板需要两到三个不同的工具;我知道我可以在标题中设置这些对象,但这样我必须更改模板,当然我会避免这样做 所以基本上在我的模板中,我有 $xpath.blablabla $anotherTool.doSomething 以前(在另一个项目中)我在java类中设置了这些对象,现在我可以创建一个处理器来执行整个velocity处理,但我认为有一种快速的方法可以避免编码 我

我有很多velocity模板可以用于另一个项目(使用Camel)

我无法理解如何在velocity上下文中插入一些自定义对象…我的模板需要两到三个不同的工具;我知道我可以在标题中设置这些对象,但这样我必须更改模板,当然我会避免这样做

所以基本上在我的模板中,我有

$xpath.blablabla
$anotherTool.doSomething

以前(在另一个项目中)我在java类中设置了这些对象,现在我可以创建一个处理器来执行整个velocity处理,但我认为有一种快速的方法可以避免编码

我认为我们可以添加消息头,告诉camel velocity端点在那里加载velocity Context。通过这种方式,用户可以覆盖camel velocity端点的旧行为。我只是为它填了一份吉拉

我只是这样做的,首先运行处理器(为所有需要的内容设置标题),然后调用
to(“velocity:mytemplate.vm”)
。我不确定是否有不同的方法,但这种方法对我来说确实很好。我不明白重点…如果使用处理器,那么所有velocity工作都将放在那里…如何(在处理器中)创建velocity context,用对象填充它,然后将velocity上下文传递给velocity:mytemplate endpoint?我在VelocityEndpoint源代码中看到创建了一个新的VelocityContext实例。在我的示例中,我将相关值放入camel
Exchange
的标题中。因此,我的
处理器
执行
exchange.getIn().setHeader(“abc”,“123”)
…在camel-velocity组件中一定有某种魔力,使camel-header在velocity上下文中可用为
${header.abc}
。好的,我的问题是在我的模板中有${abc},而不是${header.abc}