Re: [FreeMarker-user] Evaluating Variables in Expressions
Generates text that depends on changing data (like dynamic HTML).
Brought to you by:
revusky
From: Benjamin P. <be...@ga...> - 2004-09-17 01:55:58
|
Daniel Dekany wrote: > Thursday, September 16, 2004, 8:24:04 AM, Benjamin Podszun wrote: > > [snip] > >>Well, maybe it's really something dumb I'm doing in the macro. > > > No mistake in the template should result in such low-lever error... > > >>But this >>macro and function cause a ConcurrentModificationError when called: >> >><#macro walk_tree currentHash> >> <#if currentHash?is_hash> >> <#list currentHash?keys as key> >> <#if (currentHash[key])?if_exists> > > > It's not the implementation you run, because that should use > <#if (currentHash[key])?exists>. > This mistake doesn't cause ConcurrentModificationError, of course... > > >> <@walk_tree currentHash[key] /> >> </#if> >> </#list> >> </#if> >></#macro> >> >><#function tree node> >> <#if node?is_hash> >> <#list node?keys as key> >> ${key} > > > This is again something strange. This function will always return "", > because outputting operations in functions are disabled. Are you sure > you have copy-pasted what you are using? Yes, I pasted my "problem recipe", just to demonstrate/show that it happens inside functions as well as inside macros. I worked around the problem by wrapping the data-structure in objects/classes with children in java.util.List .. I'm still not sure why I hit this problem, though. >> <#if node[key]?has_content> >> ${tree(node[key])} >> </#if> >> </#list> >> </#if> >> >> <#return ""> >></#function> >> >>I call them with either >><@walk_tree data.Menu.Structure /> >>or >>${tree(data.Menu.Structure)} >> >>Yes, my FreeMarker version is 2.3 and I'm using the standard wrapper, >>that is I didn't change anything at all. > > > I know it's annoying, but it still works for me! Both the macro and the > function. I have built a 3 level depth tree from java.util.HashMap-s and > traversed that with them. I have even put null value into it. Are you > sure that data.Menu.Structure is only from HashMap-s? Is there a > specific item where it stops with that error, or it dies on the very > first item? And, really, what J2SE implementation are you using? Sun, > IBM? Which version? > I'm using Sun's J2SE, version 1.4.2 The only "special" thing about my Hash might be that my Keys are (were -> workaround) objects (read: no Strings)? > So... I think the solution will be if you write a *minimalist* > stand-alone Java application that reproduces the problem. It's simple... > just modify this, and create a template: I'm trying to find/build a minimal recipe asap. Since I could work around this problem I've a little problem getting back on my timeline/roadmap ;) So it might take me 1-2 days to try it again. Thanks for the answer(s), Ben |