W moim szablonie Velocity (plik .vm) w jaki sposób mogę przechodzić przez wszystkie zmienne lub atrybuty obecne w VelocityContext
? W odniesieniu do poniższego kodu chciałbym, aby szablon zapisał nazwy i liczbę wszystkich owoców przekazanych w kontekście.Jak zapętlić wszystkie zmienne w VelocityContext?
Map<String, Object> attribues = ...;
attribues.put("apple", "5");
attribues.put("banana", "2");
attribues.put("orange", "3");
VelocityContext velocityContext = new VelocityContext(attribues);
velocityEngine.mergeTemplate(templateLocation, encoding, velocityContext, writer);
Dziękuję. Szukałem potwierdzenia, że nie jest to bezpośrednio możliwe. Jednak gdy wykonam twój kod, metoda 'Foreach.render' Velocity rzuca' ConcurrentModificationException'. Czy to działa dla ciebie? Używam Velocity 1.7. – Somu
Czy robisz cokolwiek innego oprócz drukowania wyniku, jak w moim przykładzie? Jedna z możliwości polega na tym, że zmienna '$ entry' jest dodawana do kontekstu po otrzymaniu wpisów, co w rzeczywistości wywołuje' ConcurrentModificationException'. Jednym szybkim rozwiązaniem jest użycie 'ConcurrentHashMap' zamiast prostej' HashMap' dla zmiennej 'attributes'. –
Nie, nie robię niczego poza prostą pętlą i drukowaniem. Używanie 'ConcurrentHashMap' ciekawie wyrzuca' StackOverflowError'! Nadal przyjmuję twoją odpowiedź na potwierdzenie, że nie ma bezpośredniego sposobu na uzyskanie dostępu do kontekstu z szablonu. – Somu