Pasé un tiempo tratando de identificar esta 'variable especial' en la documentación. Tuve un caso en que quería ser capaz de pasar el hash de la raíz a una macro que operaría en él. He encontrado referencias a Environment.getCurrentEnvironment(), pero que trabaja en Java no plantillas. ¿Cómo transfiere el modelo de datos raíz a una macro?¿Cómo puedo acceder al frijol raíces en mi plantilla FreeMarker?
5
A
Respuesta
5
continuación se presenta una prueba de unidad que con éxito lo que estaba buscando. La clave era la variable '.data_model'.
public class TestFreeMarkerTemplating {
Configuration cfg = new Configuration();
StringTemplateLoader stringLoader = new StringTemplateLoader();
{ cfg.setTemplateLoader(stringLoader);
cfg.setObjectWrapper(new BeansWrapper()); }
@Test
public void testTestableMacros() throws TemplateException, IOException{
stringLoader.putTemplate("root", "<#macro user testPojo>Welcome ${testPojo.user}. <@subPojo sub/></#macro><#macro subPojo sub>Sub ${sub.user}!</#macro>");
stringLoader.putTemplate("testPojoTemplate", "<#import \"root\" as w><@w.user .data_model/>");
stringLoader.putTemplate("testSubPojoTemplate", "<#import \"root\" as w><@w.subPojo .data_model/>");
assertTemplateAndBeanYield("root", new TestPojo(), "");
assertTemplateAndBeanYield("testPojoTemplate", new TestPojo(), "Welcome Andy. Sub Bill!");
assertTemplateAndBeanYield("testSubPojoTemplate", new SubPojo(), "Sub Bill!");
}
public void assertTemplateAndBeanYield(String templateName, Object bean, String expectedOutput) throws IOException, TemplateException{
Template temp = cfg.getTemplate(templateName);
StringWriter out = new StringWriter();
temp.process(bean, out);
assertEquals(expectedOutput, out.toString());
}
public static class TestPojo {
private final String user = "Andy";
private final SubPojo sub = new SubPojo();
public String getUser() { return user; }
public SubPojo getSub() { return sub; }
}
public static class SubPojo {
private final String user = "Bill";
public String getUser() { return user; }
}
}
Cuestiones relacionadas
- 1. ¿Cómo puedo acceder al ID de la plantilla de componente desde mi componente DWT?
- 2. Etiquetas JSP en una plantilla de Freemarker
- 3. if-else en la plantilla FreeMarker
- 4. Freemarker escaping freemarker
- 5. Cómo crear una lista dentro de la plantilla de Freemarker
- 6. No puedo acceder al administrador de configuración desde mi solución
- 7. cómo acceder al elemento del diccionario en la plantilla django?
- 8. Configuración de la plantilla freemarker de classpath
- 9. Configuración de Spring Freemarker, plantilla no encontrada
- 10. cómo ordenar los valores de una FreeMarker HashMap plantilla
- 11. Cómo convertir una cadena al número en la plantilla de freemarker
- 12. ¿Cómo puedo acceder a mi panel táctil en C#?
- 13. ¿Cómo utilizar FreeMarker para la plantilla de Pojos anidados?
- 14. ¿Cómo puedo llamar a los métodos de Java en un objeto desde una plantilla de FreeMarker?
- 15. Paperclip for Rails: ¿Puedo acceder al modelo?
- 16. Obtener texto de plantilla de FreeMarker en la aplicación Spring
- 17. Fecha de impresión de Freemarker en la plantilla
- 18. fecha anulable en Freemarker
- 19. DDD: Agregue raíces
- 20. cómo puedo acceder al archivo logcat en el dispositivo
- 21. ¿Puedo acceder al llavero en el iPhone?
- 22. Asp.Net Mvc: No puedo acceder al espacio de nombres de mi modelo desde mi vista
- 23. defecto escapar en Freemarker
- 24. Página maestra con plantilla Freemarker y J2EE como .net
- 25. ¿Cómo puedo acceder a mi servidor localhost desde otras computadoras?
- 26. ¿Cómo puedo acceder al ámbito local dinámicamente en javascript?
- 27. ¿Cómo puedo acceder al último resultado en Scala REPL?
- 28. Usar propiedades Java en Freemarker
- 29. ¿Podemos acceder al controlador de micrófono de mi teléfono Android
- 30. Cómo acceder al índice de un elemento en la plantilla knockout.js