282.4. OGNL 式のサポート


Camel 2.3 の時点で利用可能

INFO:Camel の OGNL サポート はメソッドのみを呼び出すためのものです。フィールドにアクセスできません。Camel 2.11.1 以降では、Java 配列の length フィールドにアクセスするための特別なサポートを追加しました。

Simple 言語および Bean 言語は、チェーンで Bean を呼び出す Camel OGNL 表記をサポートするようになりました。Message IN ボディーに getAddress() メソッドを持つ POJO が含まれるとします。

その後、Camel OGNL 表記を使用してアドレスオブジェクトにアクセスできます。

simple("${body.address}")
simple("${body.address.street}")
simple("${body.address.zip}")

Camel はゲッターの短縮名を認識しますが、以下のような実際の名前を呼び出すか、または任意の名前を使用することができます。

simple("${body.address}")
simple("${body.getAddress.getStreet}")
simple("${body.address.getZip}")
simple("${body.doSomething}")

本文にアドレスがない場合は、null セーフ演算子(?.)を使用して NPE を回避することもできます。

simple("${body?.address?.street}")

Map または List タイプでインデックス化することもできます。そのため、以下を実行できます。

simple("${body[foo].name}")

ボディーが Map ベースで、foo が key として値を検索し、その値で getName メソッドを呼び出します。

キーにスペースがある場合は、キーを引用符で囲む 必要 があります(例: 'foo bar):

simple("${body['foo bar'].name}")

Map または List オブジェクトは、それらのキー名(ドットありまたはなし)を使用して直接アクセスできます。

simple("${body[foo]}")
simple("${body[this.is.foo]}")

キー foo に値がなければ、null セーフ演算子を使用して NPE を回避することができます。

simple("${body[foo]?.name}")

List タイプにアクセスすることもできます。たとえば、以下のようなアドレスから行を取得することもできます。

simple("${body.address.lines[0]}")
simple("${body.address.lines[1]}")
simple("${body.address.lines[2]}")

リストから 最後 の値を取得するのに使用できる特別な last キーワードがあります。

simple("${body.address.lines[last]}")

最後に 2 番目に数字を取り除くため、last-1 を使用して以下を指定 する ことができます。

simple("${body.address.lines[last-1]}")

3 番目の最後の内容は、以下のとおりです。

simple("${body.address.lines[last-2]}")

また、以下のようにリストで size メソッドを呼び出すことができます。

simple("${body.address.lines.size}")

Camel 2.11.1 以降では、Java アレイの length フィールドも追加しました。以下に例を示します。

String[] lines = new String[]{"foo", "bar", "cat"};
exchange.getIn().setBody(lines);

simple("There are ${body.length} lines")

はい、これを以下のように Operator サポートと組み合わせることができます。

simple("${body.address.zip} > 1000")
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る