http://mvel.documentnode.com/#language-guide-for-2.0
GitHub - mvel/mvel: MVEL (MVFLEX Expression Language)
1 expresstion
var == empty
var == null
Strict Typing
Strict typing in MVEL is an optional mode for the compiler, in which all types must be fully qualified, either by declaration or inference.
Enabling Strict Mode
When compiling an expression, the compiler can be put into strict mode through the
ParserContext
by settingsetStrictTypeEnforcement(true)
.Satisfying type strictness can be accomplished both by requiring explicit declaration of types inside the expression, or by notifying the parser ahead of time of what the types of certain inputs are.
For example:
ExpressionCompiler compiler = new ExpressionCompiler(expr); ParserContext context = new ParserContext(); context.setStrictTypeEnforcement(true); context.addInput("message", Message.class); context.addInput("person", Person.class); compiler.compile(context);
In this example we inform the compiler that this expression will be accepting two external inputs:
message
andperson
and what the types of those inputs are. This allows the compiler to determine if a particular call is safe at compile time, instead of failing at runtime.
2 template
MVEL 2.0 Template Integration
Using MVEL templates is straight-forward and easy. Like regular MVEL expressions, they can be executed interpretively, or be pre-compiled and be re-used for faster evaluation.
The
org.mvel.templates.TemplateRuntime
ClassThe
TemplateRuntime
class is the center of the template engine. You can pass a template to be evaluated to the template engine by way of theeval()
method.In general, the template engine follows all the same rules for context and variable binding, with an overloaded set of
eval()
methods.Here’s a simple example of parsing a template interpretively:
String template = "Hello, my name is @{name.toUpperCase()}"); Map vars = new HashMap(); vars.put("name", "Michael"); String output = (String) TemplateRuntime.eval(template, vars);
At the end of execution, the “output” variable will contain the string:
Hello, my name is MICHAEL
The
org.mvel.templates.TemplateCompiler
ClassThe
TemplateCompiler
class allows for pre-compilation of the templates.When you compile a template, a compact, reusable evaluation tree is produced that can be quickly used to evaluate a template. It is used straightforwardly:
String template = "1 + 1 = @{1+1}"; // compile the template CompiledTemplate compiled = TemplateCompiler.compileTemplate(template); // execute the template String output = (String) TemplateRuntime.execute(compiled);
At the end of execution, the “output” variable will contain the string:
1 + 1 = 2