0

私はApacheキャメルの比較的初心者です。Java DSL を使用して「アップグレード」というルートに取り組んでいます。列挙型を持つ「Action」というJava Beanがあります。

public enum bundle{
AAA("Monthly AAA Bundle"),
BBB("Monthly BBB Bundle");
private String upbundle;
private bundle(String upBundle) {this.upbundle = upBundle;}
private getBundle() {return upbundle;}
}

ルートから、enum で「valueOf()」を呼び出して、BundleName を取得します。交換ヘッダーに列挙値「AAA」があります。「AAA」を使用して列挙値、つまり「Monthly AAA Bundle」を取得し、交換ヘッダー名「destBundleName」に保存したい

使った

.setHeader("destBundleName", simple(Action.bundle.valueOf(header("bm").toString()).getBundle()))

実行時エラー「Java.lang.Enum.valueOfに列挙型定数Action.bundle.header {bm}がありません」が表示されます

しかし、私が使用する場合

.setHeader("destBundleName", simple(Action.bundle.valueOf("AAA")).getBundle())) it works fine.

たとえば、header("bm").toString() が文字列に置き換えられていないことを意味します。

ルートから enum valueof & を呼び出す process() または Bean メソッドを作成できますが、その Bean メソッドを使用できますが、キャメル ヘッダーの値を valueOf() パラメータとして使用して、ルートから直接 enum valueOf() にアクセスする方法はありますか。

助けてくれてどうもありがとう。

4

0 に答える 0