【发布时间】:2017-10-06 18:50:17
【问题描述】:
假设我们有一个这样的 POJO 类:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyPojo
{
private Map<String, Object> myMap;
private List<AnOtherPojoClass> myOtherPojos;
private int myInteger;
}
该类型用于REST DSL触发的骆驼路由:
<post uri="/runpojo" consumes="application/json" produces="application/json" bindingMode="json" type="com.test.MyPojo">
<route>
<!-- pojo's myInteger is already filled from REST caller -->
<setBody>
<simple>${body.setMyMap(${bean:service2?method=calculateMap(${body.myInteger})})}</simple>
</setBody>
<setBody>
<simple>${body.setMyOtherPojos(${bean:service3?method=calculateOtherPojo})}</simple>
</setBody>
<marshal ref="json" />
</route>
</post>
但这是我的问题:
调用我的 POST 后,我想在我的身体中设置一个 POJO 属性。但是<simple/> 不起作用,因为它试图将calculateMap(${body.myInteger})}) 方法参数转换为字符串。只要参数是简单类型,这可能有效,但在我的生产代码myInteger 中是byte[]。另一个问题是,即使我设法让 bean 运行,返回值 Map<String, Object> (骆驼内部)被解析为 String,但我的设置器期望 Map。
当前版本:
<camel.version>2.17.1</camel.version>
我可以做什么,将 POJO 属性设置为另一个 bean 方法调用的结果?
谢谢, 一月
【问题讨论】:
-
你用的是什么版本的骆驼?
-
@ClausIbsen 当前骆驼版本是
<camel.version>2.17.1</camel.version>
标签: java apache-camel pojo