views:

1087

answers:

2

Hello,

I've just started using StringTemplate in my C# project. I went through the documentation, but I can't seem to find a way to implement this simple scenario:

I have a list of simple business objects (let's say Orders) and I want them displayed inside a UL tag inside my html template.

So, my .st template looks like this (pseudo-code):

<html> some text <ul>[Order template]<li>[Order name here]</li>[/Order template]</ul></html>

and I want my output to be:

<html> some text <ul><li>Order 1</li><li>Order 2</li>...</ul></html>

I can't figure out how to make this work using StringTemplate. Any ideas?

+5  A: 

You should use the following syntax:

<ul>
    $orders: {order|
        <li>Order $order.OrderId$</li>
    }$
</ul>

The documentation about this feature is really hard to find, I found some info here (search for the pipe symbol |).

Ronald Wildenberg
Thank you sir, that solved my problem.
Alt_Doru
You're welcome :)
Ronald Wildenberg
A: 

That works for me also. If you are calling StringTemplate from Antlr as a StringTemplateGroup, the syntax is a little different. Replace $ with <>.

group DTO;

assign1(m, attributes) ::= << package demo;

import java.io.Serializable;

public class implements Serializable {

    public <m>() {

    super();

}

;

public <attribute.type> get<attribute.name>() {

    return <attribute.name>;

}

public void set<attribute.name>(<attribute.type> <attribute.name>) {

    this.<attribute.name> = <attribute.name>;

}

}>

}

>

Richard Catlin