我想在解析spring表达式时访问camel exchange头值。
有可能吗?我正在寻找下面的东西。
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("request.headers['myHeader'].concat('!')");
String message = (String) exp.getValue();
System.out.println(message);
或者我们可以使用@Header并访问相同的内容吗? 除了将StandardEvaluationContext的值作为变量添加然后解析它之外,还有其他方法吗?
同样感谢一些快速帮助。
还有一个问题是,我是否可以在一个地方注册我的所有自定义功能?我的意思是我想避免为每次调用注册函数来评估表达式。目前我正在以下方式进行。
public static String evalExpr(String expr,
Map<String, Object> variables) throws NoSuchMethodException,
SecurityException {
StandardEvaluationContext context = new StandardEvaluationContext();
context.registerFunction("concat", CusExprs.class
.getDeclaredMethod("concat", String[].class));
context.registerFunction("substr", CustExprs.class
.getDeclaredMethod("substr", new Class[] { String.class,
Integer.class, Integer.class }));
context.setVariables(variables);
return parser.parseExpression(expr).getValue(context, String.class);
}