【问题标题】:Camel + Velocity: how to put things in Velocity contextCamel + Velocity:如何将事物置于 Velocity 上下文中
【发布时间】:2016-02-09 20:56:09
【问题描述】:

我有很多速度模板可以重复用于另一个项目(使用 Camel)。

Reading the documentation我无法理解如何在速度上下文中插入一些自定义对象...我的模板需要两个或三个不同的工具;我看到我可以在标题中设置这些对象,但这样我必须更改我的模板,当然我会避免这种情况。

所以基本上在我的模板中我有类似的东西

$xpath.blablabla
$anotherTool.doSomething

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

【问题讨论】:

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

标签: java apache-camel velocity


【解决方案1】:

我认为我们可以添加消息头来告诉骆驼速度端点在那里加载 VelocityContext。这样,用户可以覆盖骆驼速度端点的旧行为。我只是为它填写了一个 JIRA CAMEL-7532

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2021-01-12
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多