Совершенно нормально использовать MVEL для этого типа шаблонов.
Проблема в том, что вы выполняете методы в классе MVEL. Методы этого класса предназначены для оценки и компиляции выражений MVEL, а не шаблонов.
На самом деле вам нужно следующее:
TemplateRuntime.eval(...)
Изменение вашего примера выше следующих работ:
String input = "foo()";
assertEquals(input, TemplateRuntime.eval(input, new HashMap()));
Карта, переданная методу eval, предназначена для переменного разрешения. например,
String input = "foo(@{myVar});";
Map vars = new HashMap();
vars.put("myVar", "bar");
Object eval = TemplateRuntime.eval(input, vars);
assertEquals("foo(bar);", eval);
Для получения более подробной информации см. Руководство по языку MVEL и Введение в шаблоны MVEL .