我需要在出站端点上动态设置地址,并且根据我在forward.url中收到的内容,此出站URL可以是HTTP或HTTPS。所以,我创建了2个子流,一个用于HTTP,另一个用于HTTPS。
要将请求路由到适当的子流,我写了一个CHOICE路由器,如下所示
<set-variable value="#[message.inboundProperties['http.query.params']['forward.url']]" variableName="forwardAddress" doc:name="Variable"/>
<logger message="Forward address is #[forwardAddress] , and does it start with http:// ~ #[String.valueOf('${forwardAddress}').startsWith('http://');]" level="INFO" doc:name="Logger"/>
<choice doc:name="Choice">
<when expression="#['${forwardAddress}'.startsWith('http://')]">
<flow-ref name="HttpCall" doc:name="HTTP subflow"/>
</when>
<when expression="#['${forwardAddress}'.startsWith('https://')]">
<flow-ref name="Httpscall" doc:name="HTTPS subflow"/>
</when>
<otherwise>
<set-payload value="The query string forward.url must start with http:// or https://" doc:name="Set Payload"/>
<http:response-builder doc:name="Invalid Request - 400" status="400"/>
</otherwise>
</choice>
但是,表达式无法正常工作。我做错了什么?
答案 0 :(得分:1)
语法$ {}适用于spring属性占位符。使用#[flowVars.forwardAddress]或#[forwardAddress]作为流量变量。