2010-02-24 19 views
7

Estoy interesado en escribir algo similar a un ciclo anidado utilizando el motor de plantillas StringTemplate. En C# tiene una tabla Hash de la cual cada clave contiene una lista de objetos de documento, cada documento tiene un título y una fuente. Me gustaría enumerar al comienzo de un correo electrónico, un resumen de los títulos de los documentos por fuente.Loop anidado en StringTemplate

<h1>Summary</h1> 
<h2>Source A</h2> 
<ul> 
    <li>title 1</li> 
    <li>title 2</li> 
</ul> 
<h2>Source B</h2> 
<ul> 
    <li>title 3</li> 
    <li>title 4</li> 
</ul> 

¿Cuál es la mejor manera de lograr esto con StringTemplate?

Respuesta

11

asumiendo que ha transformado a estas estructuras de datos apropiadas - Source clase que tiene getName y getDocuments métodos y Document clase que tiene getTitle método, que se verá así:

$ 
sources: 
{ 
    source| 
    <h2>Source $source.name$ </h2> 
    $ 
    source.documents: 
    { 
     document| 
     <li>title $document.title$</li> 
    } 
    $ 
} 
$ 
+0

Esta es una buena respuesta para objetos generales, pero no lo hace w ork para una HashTable. –

+1

¿Podría mostrarme cómo se ven sus objetos hashtable y document? Con hashtable, puede usar la sintaxis 'ht.keys: {k | something}'. – viaclectic