我正在尝试在交易所的主体上设置一个名为“articleId”的属性,我认为最明确的方法是使用bean()
。但是,我无法让它发挥作用。当我的路线中有以下内容时:
.bean(body(Article.class), "setArticleId(${header.articleId})")
我收到此错误消息:
引起:org.apache.camel.component.bean.MethodNotFoundException:在bean上找不到名称为:setArticleId($ {header.articleId})的方法:bodyAs [com.example.model.Article]类型:org .apache.camel.builder.ValueBuilder
我的解决方案是使用processor()
和几行代码来从标头值设置articleId属性,但对我来说似乎有些过分。
答案 0 :(得分: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
答案 1 :(得分:0)
我认为你需要花一些时间来浏览this page,如果你不知道如何告诉camel你想要它调用的bean的哪个方法。
如果您只想设置exchange属性,可以使用DSL
setProperty(“articleId”,body());
做这种工作。