Spring表达式返回类型

时间:2015-05-19 19:18:17

标签: spring spring-el spring-io

我需要一种方法来确定提供的Spring Expression是否可以评估为布尔值。 例如,像“age == 18”这样的表达式可以在SpEL中返回布尔值,但不能返回“age + 10”之类的值。 请注意,在进行此验证时我只会有表达式(因此,我不能只评估表达式并查看返回类型)

1 个答案:

答案 0 :(得分:0)

使用JavaCompiler,您可以在内存中编译表达式example,并获得评估结果。

你的内存中编译方法可以做类似的事情(你的表达式是String变量theExpressionToEvaluate)

StringWriter writer = new StringWriter();
PrintWriter out = new PrintWriter(writer);
out.println("public class HelloWorld {");
out.println("  public static void isBoolean() {");
out.println("try {boolean result = " + theExpressionToEvaluate + "; return result;}");
out.println("catch (ClassCastException e) { return false; }");