0

我正在尝试在交易所的主体上设置一个名为“articleId”的属性,我认为最明确的方法是使用bean(). 但是,我无法让它工作。当我的路线中有以下内容时:

.bean(body(Article.class), "setArticleId(${header.articleId})")

我收到此错误消息:

原因:org.apache.camel.component.bean.MethodNotFoundException:方法名称:setArticleId(${header.articleId}) 在 bean 上找不到:bodyAs[com.example.model.Article] 类型:org.apache。 camel.builder.ValueBuilder

我的解决方案是使用 aprocessor()和几行代码来从标头值设置 articleId 属性,但对我来说这似乎有点矫枉过正。

4

2 回答 2

1

我一直在抱怨骆驼用户没有很好的方法来做到这一点。现在这是我解决它的方法:

.setHeader("dummy").ognl("request.body.articleId = request.headers.articleId")

这需要添加 camel-ognl 依赖项。

更新

实际上,还有一个语言端点可以在没有 setHeader 的情况下执行此操作,但是您必须说 transform=false 否则它会用结果替换您的正文:

.to("language:ognl:request.body.articleId = request.headers.articleId?transform=false") // remember ?transform=false    
于 2013-09-19T18:46:02.917 回答
0

我认为你需要花一些时间来浏览这个页面,如果你不知道如何告诉骆驼你想要它调用哪个 bean 方法。

如果你只想设置交换属性,你可以使用 DSL

setProperty("articleId", body());

做这种工作。

于 2013-07-18T08:03:13.647 回答