You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@click.apache.org by WarnerJan Veldhuis <wa...@qprcostcontrol.com> on 2009/07/02 14:50:20 UTC
Location of HTML
Gents,
I was wondering, what would be the best place for generating HTML? It
can either be in Velocity templates or by overriding the
Control#render(HtmlStringBuffer) and Control#getTag() methods.
What do you normally do?
For example, I have a UserList extending a Panel, which shows a list of
users from my system. The HTML is just a simple DIV containing a
title-DIV and a UL/LI of users. So will it be a Velocity template with a
#foreach, or should I go and create custom controls and generate HTML on
the fly?
Cheers,
WarnerJan
Re: Location of HTML
Posted by Malcolm Edgar <ma...@gmail.com>.
I think if there is a lot of HTML markup then a velocity template is
definitely easier to read, and create using a HTML editor. However if
there is a lot of conditional / dynamic content you can get to a point
where rendering the HTML in Java is easier to do.
In terms of performance they are both very very fast.
regards Malcolm Edgar
On Fri, Jul 3, 2009 at 3:20 AM, Bob Schellink<sa...@gmail.com> wrote:
> WarnerJan Veldhuis wrote:
>>
>> Gents,
>>
>> I was wondering, what would be the best place for generating HTML? It can
>> either be in Velocity templates or by overriding the
>> Control#render(HtmlStringBuffer) and Control#getTag() methods.
>>
>> What do you normally do?
>
>
> I don't think there is a hard and fast rule here. Both approaches
> have pros and cons.
>
> Sticking to Java (#render) allows you use a debugger to step through code.
> Java is also a more powerful language to expose extension points (template
> pattern). For example you could have a method createLabel() invoked from
> your render method which subclasses can override to create a different
> label.
>
> One problem with Java though is that multiline Strings and interpolation
> isn't supported while templates engines do support this. So specifying the
> HTML in a template normally is easier to read and understand.
>
>
>> For example, I have a UserList extending a Panel, which shows a list of
>> users from my system. The HTML is just a simple DIV containing a title-DIV
>> and a UL/LI of users. So will it be a Velocity template with a #foreach, or
>> should I go and create custom controls and generate HTML on the fly?
>
>
> Sounds like a template would be easiest to begin with. You can always
> refactor it later if you need more flexibility.
>
> kind regards
>
> bob
>
>
Re: Location of HTML
Posted by Bob Schellink <sa...@gmail.com>.
WarnerJan Veldhuis wrote:
> Gents,
>
> I was wondering, what would be the best place for generating HTML? It
> can either be in Velocity templates or by overriding the
> Control#render(HtmlStringBuffer) and Control#getTag() methods.
>
> What do you normally do?
I don't think there is a hard and fast rule here. Both approaches
have pros and cons.
Sticking to Java (#render) allows you use a debugger to step through
code. Java is also a more powerful language to expose extension points
(template pattern). For example you could have a method createLabel()
invoked from your render method which subclasses can override to
create a different label.
One problem with Java though is that multiline Strings and
interpolation isn't supported while templates engines do support this.
So specifying the HTML in a template normally is easier to read and
understand.
> For example, I have a UserList extending a Panel, which shows a list of
> users from my system. The HTML is just a simple DIV containing a
> title-DIV and a UL/LI of users. So will it be a Velocity template with a
> #foreach, or should I go and create custom controls and generate HTML on
> the fly?
Sounds like a template would be easiest to begin with. You can always
refactor it later if you need more flexibility.
kind regards
bob