0

アウトバウンド エンドポイントでアドレスを動的に設定する必要があり、forward.url で受け取る内容に応じて、このアウトバウンド URL は HTTP または HTTPS のいずれかになります。そこで、HTTP 用と HTTPS 用の 2 つのサブフローを作成しました。

リクエストを適切なサブフローにルーティングするために、以下に示すように 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>

ただし、式は正しく機能していません。私は何を間違っていますか?

4

1 に答える 1

1

構文 ${} は、Spring プロパティのプレースホルダー用です。フロー変数には #[flowVars.forwardAddress] または #[forwardAddress] を使用します。

于 2014-03-28T18:20:51.370 に答える