Spędziłem chwilę próbując zidentyfikować tę "specjalną zmienną" w dokumentacji. Miałem przypadek, w którym chciałem przekazać root haszysz do makra, który na nim działał. Znalazłem odniesienia do Environment.getCurrentEnvironment(), ale działa w Java nie szablony. Jak przekazać główny model danych do makra?Jak uzyskać dostęp do komponentu root w szablonie FreeMarker?
5
A
Odpowiedz
5
Poniżej znajduje się test jednostki, który z powodzeniem wykonuje to, co robiłem. Kluczem była zmienna ".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; }
}
}
Powiązane problemy
- 1. Jak uzyskać nazwę hosta w szablonie freemarker?
- 2. Znaczniki JSP w szablonie Freemarker
- 3. Jak uzyskać dostęp do macierzystej java w freemarker?
- 4. Joomla 2.5, Dostęp do parametrów szablonu w szablonie komponentu
- 5. Jak uzyskać dostęp do globalnej zmiennej JS w angular2 komponentu
- 6. Jak uzyskać dostęp do ID szablonu komponentu z Mojego komponentu DWT?
- 7. Jak uzyskać dostęp do indeksu elementu w szablonie knockout.js
- 8. Jak uzyskać dostęp do właściwości modelu szkieletowego w szablonie kierownicy
- 9. jak uzyskać dostęp do elementu słownika w szablonie django?
- 10. Jak uzyskać dostęp do elementów tablicy w szablonie Django?
- 11. Jak uzyskać dostęp do pola Enum w szablonie playframework
- 12. Jak uzyskać dostęp do korzenia w widoku komponentu
- 13. Ukryj odsyłacz do komponentu w szablonie Dreamweaver
- 14. Jak zdobyć elementy listy według indeksu w szablonie freemarker?
- 15. Jak uzyskać dostęp do właściwości "key" z komponentu reactjs
- 16. Jak uzyskać dostęp do metody z app.component z innego komponentu?
- 17. Dostęp do kontekstu głównego w szablonie Handlebar.js
- 18. Jak uzyskać dostęp do elementu wideo HTML w Angular2
- 19. Dostęp zalogowanego użytkownika w szablonie
- 20. Dostęp do "bieżącego" zakresu od kontrolera "root"
- 21. Jak uzyskać parametry komponentu?
- 22. Dostęp rekwizyty w funkcji danych komponentu vue
- 23. ng2 - dynamiczne tworzenie komponentu opartego na szablonie
- 24. Jak uzyskać dostęp do RouteTable.Routes.MapHttpRoute?
- 25. Jak uzyskać dostęp do aplikacji?
- 26. Jak uzyskać dostęp do ukrytego obiektu z FormView Twiga w szablonie?
- 27. Jak uzyskać dostęp do zmiennych globalnych w szablonie Meteor bez pomocy pomocnika?
- 28. Jak uzyskać dostęp do GetGlobalResourceObject()
- 29. Jak uzyskać dostęp do aliasu uwierzytelniania z wdrożonego komponentu EJB do serwera Websphere 6.1
- 30. Jak uzyskać dostęp do stałej w komponencie i usłudze Angular 2?