|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.jexl2.UnifiedJEXL.Template
public final class UnifiedJEXL.Template
A Template is a script that evaluates by writing its content through a Writer. This is a simplified replacement for Velocity that uses JEXL (instead of OGNL/VTL) as the scripting language.
The source text is parsed considering each line beginning with '$$' (as default pattern) as JEXL script code and all others as Unified JEXL expressions; those expressions will be invoked from the script during evaluation and their output gathered through a writer. It is thus possible to use looping or conditional construct "around" expressions generating output.
For instance:
$$ for(var x : [1, 3, 5, 42, 169]) {
$$ if (x == 42) {
Life, the universe, and everything
$$ } else if (x > 42) {
The value $(x} is over fourty-two
$$ } else {
The value ${x} is under fourty-two
$$ }
$$ }
Will evaluate as:
The value 1 is under fourty-two The value 3 is under fourty-two The value 5 is under fourty-two Life, the universe, and everything The value 169 is over fourty-two
During evaluation, the template context exposes its writer as '$jexl' which is safe to use in this case. This allows writing directly through the writer without adding new-lines as in:
$$ for(var cell : cells) { $jexl.print(cell); $jexl.print(';') }
A template is expanded as one JEXL script and a list of UnifiedJEXL expressions; each UnifiedJEXL expression being replace in the script by a call to jexl:print(expr) (the expr is in fact the expr number in the template). This integration uses a specialized JexlContext (TemplateContext) that serves as a namespace (for jexl:) and stores the expression array and the writer (java.io.Writer) that the 'jexl:print(...)' delegates the output generation to.
| Constructor Summary | |
|---|---|
UnifiedJEXL.Template(String directive,
Reader reader,
String... parms)
Creates a new template from an input. |
|
| Method Summary | |
|---|---|
String |
asString()
Recreate the template source from its inner components. |
void |
evaluate(JexlContext context,
Writer writer)
Evaluates this template. |
void |
evaluate(JexlContext context,
Writer writer,
Object... args)
Evaluates this template. |
UnifiedJEXL.Template |
prepare(JexlContext context)
Prepares this template by expanding any contained deferred expression. |
String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public UnifiedJEXL.Template(String directive,
Reader reader,
String... parms)
directive - the prefix for lines of code; can not be "$", "${", "#" or "#{"
since this would preclude being able to differentiate directives and UnifiedJEXL expressionsreader - the input readerparms - the parameter names
NullPointerException - if either the directive prefix or input is null
IllegalArgumentException - if the directive prefix is invalid| Method Detail |
|---|
public String toString()
toString in class Objectpublic String asString()
public UnifiedJEXL.Template prepare(JexlContext context)
context - the context to prepare against
public void evaluate(JexlContext context,
Writer writer)
context - the context to use during evaluationwriter - the writer to use for output
public void evaluate(JexlContext context,
Writer writer,
Object... args)
context - the context to use during evaluationwriter - the writer to use for outputargs - the arguments
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||