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