1

expressionSpring のフィールドの三項式でスプリング プロパティを使用する方法はありheader-enricherますか? 次のようになります。

<int:header-enricher>
    <int:header name="DESTINATION" expression="headers['DATA'].routingKey == 'ROUTE1' ? ${route1.db} : ${route2.db}"/>
</int:header-enricher>

これにより、 というエラーが発生しましたUnexpected token. Expected 'colon(:)' but was 'lcurly({)'。多分私は何かを逃した。

4

2 に答える 2

1

の原因は、プロパティ ファイルにUnexpected token. Expected 'colon(:)' but was 'lcurly({)'プロパティが存在しなかったため、式が と評価され、変更されないままでした。これにより、構文エラーが発生します。route1.dbheaders['DATA'].routingKey == 'ROUTE1' ? ${route1.db} : some-alternative-db${route1.db}

さらに、@Hassen は、プロパティ ファイルの値を適切な文字列としてレンダリングするために必要な一重引用符を配置することを提案しました。それがないと、評価された式headers['DATA'].routingKey == 'ROUTE1' ? direct-db : some-alternative-dbは と の両方を Spring フィールド/プロパティとして扱いdirect-dbますsome-alternative-db。これらは、最初は間違った名前の変数でさえあります。

最終的な有効な形式は次のとおりです。

<int:header name="DESTINATION" expression="headers['DATA'].routingKey == 'ROUTE1' ? '${route1.db}' : '${route2.db}'"/>

また、プロパティ ファイルに次のものが含まれているとします。

route1.db=direct-db route2.db=some-alternative-db

評価された式は次のようになります。

headers['DATA'].routingKey == 'ROUTE1' ? 'direct-db' : 'some-alternative-db'

于 2016-09-16T08:58:29.620 に答える