想象我们有一个像这样的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})})
方法参数转换为String。只要参数是简单类型,这可能有效,但在我的生产代码中myInteger
是byte[]
。另一个问题是,即使我设法让bean运行,返回值Map<String, Object>
也是(骆驼内部)解析为String
,但我的setter期望Map
。
当前版本:
<camel.version>2.17.1</camel.version>
如何将POJO属性设置为另一个bean方法调用的结果?
谢谢, 扬
答案 0 :(得分:0)
我很确定我们已将其修复为较新版本,因此请升级您的Camel。