到目前为止,这是我的代码,我希望offset
增加50
标题的值:
.process(new Processor() {
@Override
public void process(Exchange ex){
ex.getIn().setHeader("offset", Integer.parseInt(ex.getIn().getHeader("offset").toString())); }
})
有人知道一个简单的解决方案吗?
答案 0 :(得分:3)
我没有看到你在代码中用50
增加整数标题的位置[注意:之后编辑了问题]。您似乎只是将String
解析为整数。您可以通过利用类型转换:
Message in = ex.getIn();
in.setHeader("offset", in.getHeader("offset", Integer.class));
如果您希望按50
增加偏移标头,可以在OGNL的帮助下在路线中执行此操作(无需使用处理器,像建议的其他答案一样),并首先将标题转换为整数:
from("direct:hello")
.setHeader("offset", header("offset").convertTo(Integer.class))
.setHeader("offset").ognl("request.headers.offset + 50");
答案 1 :(得分:2)
我正在使用这样的处理器:
// less than $max
for($i = 0; $i < $max; $i++){
示例:
// less than OR equal to $max
for($i = 0; $i <= $max; $i++){
有兴趣看到其他简单的解决方案。
答案 2 :(得分:1)
但是,对于更复杂的用例,通常建议您选择一种更具表达能力的强大语言,例如SpEL,Groovy,OGNL和others。
如果使用Spring,则可能已经在使用SpEL。
我使用SpEL重写了表达式:
from("direct:hello")
.setHeader("offset").spel("#{request.headers['offset'] != null ? request.headers['offset'] + 1 : 1}")