我有这个简单的代码
def values = [foo:5, bar:6]
def result = Eval.me("p", values, "${p.foo}+${p.bar}")
为什么它不起作用?
我得到了:
groovy.lang.MissingPropertyException: No such property: p for class: ConsoleScript7
感谢您的帮助。
答案 0 :(得分:4)
Groovy表达式中的字符串不包含双引号,因此Groovy不会将它们视为具有表达式支持的GString。在表达式周围添加转义双引号并转义$
将为您提供有效的结果。
Eval.me("p", values, "\"\${p.foo}\"+\"\${p.bar}\"")
此外,您可以执行以下操作之一,具体取决于您是否要输出String或整数值:
Eval.me("p", values, "p.foo.toString()+p.bar.toString()")
或
Eval.me("p", values, "p.foo+p.bar")