我有一个使用Apache Camel和Active MQ的应用程序。在我配置路由的RouteBuilder
类中,in
正文中可能缺少参数。在这种情况下,我想给它一个默认值。
以下是我现在所拥有的:
@Override
public void configure() throws Exception {
...
String invocation = "aMethod( ${body[context]}, ${body[aParam]}, ${body[param2]} )";
from(url).routeId(url).bean(bean, invocation);
}
在我的情况下,param2
是一个布尔值,如果它不存在,我想将aMethod
作为false
发送给它。我怎么能这样做?
我在这里看到了一些内容:http://camel.apache.org/simple.html#Simple-OGNLexpressionsupport其中显示“你还可以使用null安全操作符(?。)来避免NPE,例如,如果正文没有地址” ,但我无法弄清楚如何编写调用,所以在指定的情况下我没有错误。
答案 0 :(得分:1)
我相信您希望使用类似的条件:
from("")
.choice()
.when(header("myHeader").isNull())
.setHeader("myHeader").simple("false")
.end() //This might be endChoice can't remember syntax exactly
.bean(myBean, myMethod);
..在Body中修改了Object
from("")
.processor( new Processor(Exchange exchange) {
MyObject obj = exchange.getIn().getBody(MyObject.class);
Boolean b = obj.getParam2();
if(b == null)
obj.setParam2(Boolean.FALSE);
}
.bean(myBean, myMethod);
注意:如果您的实际java类使用' boolean'而不是布尔' class wrapper,然后在初始化时所有布尔值默认设置为false。因此,如果你的身体中有一个物体并且没有人拥有布尔值,那么它将默认为假。