Re: HashMap binding dosen't work?
Daniel Dekany <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
Tuesday, June 17, 2008, 6:36:04 PM, Andrei Chirila wrote:
> Hello,
>
> I'm using Spring 2 with Freemarker 2.3.13 and I'm having this problem:
>
> Language (the class)
> Map<String,String> words = new HashMap<String,String>(); (the property).
>
> I am able to get the keys, but I can't find any way to get the values.
> I took the example in FM Online Documentation and replaced:
> <#assign h = {"name":"mouse", "price":50}>
> with my hash:
> <#assign h = lang.words/>
>
> Then using as usual:
> <#assign keys = h?keys>
> <#list keys as key>${key} = ${h[key]}; </#list>
>
> But I keep receiving this error and I can't solve it.
>
> Expression lang.words[key] is undefined on line 22, column 23 in
Seems that one of the values in that map is null. Try ${h[key]!'null'}.
> languageDetails.ftl. The problematic instruction: ---------- ==>
> ${lang.words[key]} [on line 22, column 21 in languageDetails.ftl]
> ---------- Java backtrace for programmers: ----------
> freemarker.core.InvalidReferenceException: Expression lang.words[key]
> is undefined on line 22, column 23 in languageDetails.ftl. at
> freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
> at freemarker.core.Expression.getStringValue(Expression.java:118) at
> freemarker.core.Expression.getStringValue(Expression.java:93) at
> freemarker.core.DollarVariable.accept(DollarVariable.java:76) at
> freemarker.core.Environment.visit(Environment.java:208) at
> freemarker.core.MixedContent.accept(MixedContent.java:92) at
> freemarker.core.Environment.visit(Environment.java:208) at
> freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)
> at freemarker.core.Environment.visit(Environment.java:415) at
> freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) at
> freemarker.core.Environment.visit(Environment.java:208) at
> freemarker.core.MixedContent.accept(MixedContent.java:92) at
> freemarker.core.Environment.visit(Environment.java:208) at
> freemarker.core.Environment.process(Environment.java:188) at
> freemarker.template.Template.process(Template.java:237) at
> org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:344)
> at
> org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:280)
> at
> org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:225)
> at
> org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:174)
> at
> org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:252)
> at
> org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1173)
> at
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:901)
> at
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
> at
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
> at
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
> at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
> at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
> at java.lang.Thread.run(Unknown Source)
>
> Thank you,
> Andrei
>
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> FreeMarker-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/freemarker-user
--
Best regards,
Daniel Dekany
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php