I had a similar problem. What I ended up doing was returning Object from the
beginRender method and either returning the block parameter or using the
writer and returning null.
To simulate looping you can store your tokenizer in a page variable and
return st.hasMoreTokens from afterRender, if it's false it will call
beginRender again.
private StringTokenizer st;
@Parameter
private Block _blockParam;
void setupRender() {
st = new StringTokenizer(template, " ");
}
@BeginRender
final Object begin(MarkupWriter writer)
{
String token = st.nextToken();
if("TEST".equals(token))
{
return _blockParam;
}
else
{
writer.writeRaw(token);
}
return null;
}
@AfterRender
boolean after(MarkupWriter writer) {
return !st.hasMoreTokens(); // if it has more tokens go back to begin
}
It doesn't fit for all cases, but something like that should work for the
simple case you laid out...
Josh
On 9/18/07, Ted Steen <[EMAIL PROTECTED]> wrote:
>
> I would like to do this,
>
> @BeginRender
> final void begin(MarkupWriter writer)
> {
> StringTokenizer st = new StringTokenizer(template, " ");
> while(st.hasMoreTokens())
> {
> String token = st.nextToken();
> if("TEST".equals(token))
> {
> //TODO Render a block or component here!
> }
> else
> {
> writer.writeRaw(token);
> }
> }
> }
>
> But I cant find anything in the api that lets me render a block or
> component programmatically..
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
--
TheDailyTube.com. Sign up and get the best new videos on the internet
delivered fresh to your inbox.