On Sat, Oct 4, 2008 at 3:57 AM, Werner Punz <[EMAIL PROTECTED]> wrote:

> Hello everyone
>
> I have developed another approach to the templating problem.
> Most solutions which tried to tackle the approach worked on interepted
> template level:
>
> https://issues.apache.org/jira/browse/TOMAHAWK-1327
>
> I did another approach the last few weeks
> I made an embedded templating compiler for java
>
> I did it due to the inherent speed hits we have by using existing
> templating solutions and due to the fact that I want to parts of the code in
> the dojo components project over to templates to increase readability:
>
>
> What I did was to develop with antlr some mini velocity which can be
> embedded into java via special comments.
> The advantage is, that you simply can embed your templates inline via
> a comment flag you can work on valid java code while still having your
> templating code in one place. It is more or less an inverse scriptlet system
> to be usable from java.
>
>
> I will give an example
>
> public class SimpleTest {
>
>    static String helloWorld = "hello world";
>
>    private calledMethod() {
>
>        System.out.println("called function");
>    }
>
>    public void emitTemplate() {
>
>        String [] values = new String[5];
>        values[0] = "value0";
>        values[1] = "value1";
>        values[2] = "value2";
>        values[3] = "value3";
>        values[4] = "value4";
>
>
>
>        /*TPL
>           #outputop(System.out.println)
>           This is a test for a simple embedded template
>
>           $helloWorld
>
>           <table>
>           <tbody>
>
>           #each(String, $values)
>           </tr><td>$it</td></tr>
>           #end
>
>           calling a method
>
>           $this.calledMethod();
>
>           this text should follow after table!
>
>        TPL*/
>
>
>    }
>
> }
>
>
> This code is then basically rendered against
> the output System.out.println
>
> (other output directives can given via an
> #outputop(<output directive>)
> command in the template!
>
> I know this approach is not academic due to no MVC
> and due to extended control commands like iterations and selections
> within the language and the possibility to call external methods
> within the template.
>
> The advantage however is, the strings are rendered straight into
> output directives almost like handwritten code, by avoiding introspection I
> can gain similar speeds
>
> (however with the disadvantage that you have to pass a casting datatype
> into the #for and #each loops)
>
> But if the community would like it I would merge it into our
> utils project next week. Otherwise I can drop it somewhere else.
>

I would like to see this in myfaces-builder-plugin, so this feature can be
extended properly in the future.
This could improve the way we write some component parts, so it is most
welcome.


>
> Werner
>
>
>
>

Reply via email to