我是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;}
}
从路由我想在枚举上调用'valueOf()'来获取BundleName。我在交换标头中有枚举值“AAA”。使用“AAA”我想检索枚举值,即“每月 AAA 捆绑包”并将其存储在交换标头名称“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()。
非常感谢您的帮助。