Re: Problem with the function's error stacktrace and debugging
Daniel Dekany <[email protected]> Thu, 9 May 2013 01:58:54 +0200
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
Wednesday, May 8, 2013, 1:02:19 PM, Albert Kam wrote:
> I have just faced this situation where the error message is not
> suffucient to determine stacktrace of ftl-s that lead to the error.
>
> So, i have an ftl file :
>
> <@layout.main>
> my page contents here,
> calling another macro here : ${url.myUrlToAnotherPage(paramsHere)}
> </@layout.main>
>
> Now, in the url.ftl file, i have the function of
> myUrlToAnotherPage, which calls other functions that exist in the url.ftl.
>
> But the error message only display it like this :
>
> Error on line 23, column 48 in lib/url.ftl
> Expecting a string, date or number here, Expression finalValue is
> instead a freemarker.template.SimpleSequence
> The problematic instruction:
> ----------
==>> return [on line 23, column 17 in lib/url.ftl] [on line 23, column 17 in lib/url.ftl]
> in user-directive layout.layout [on line 11, column 1 in post/ad/no0035.ftl]
> ----------
> With this error message, i know that the rror is on line 23,
> another function called blah for example. But i dont know who calls
> blah, it's not in the stack trace.
> After some dirty removing parts of the page to get the culprit, i found out that :
> - wrap my page as a nested value for another macro (on line 11,
> displayed on the error stacktrace)
> - my page calls url.myUrlToAnotherPage function
> - url.myUrlToAnotherPage calls blahblah function
> - blahblah calls blah function
> - blah function errors (on line 23, displayed on the error stacktrace)
Looks like a bug or quality problem in the error reporting. I will try
to look into it in the future.
> The second thing i want to ask that is related with this is :
> How do i debug like the simple System.out.println in freemarker functions ?
> Do i have to bind and call the java functions or something cool
> exists already in freemarker to achieve this ?
Unfortunately not. Something like #log_[trace|debug|info|warn|error]
should be added, but it wasn't yet done. So for now you have to
implement your own directive or call a method for this. (You may want
to use the logging API of FreeMarker.)
> Thank you !
--
Thanks,
Daniel Dekany
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and
their applications. This 200-page book is written by three acclaimed
leaders in the field. The early access version is available now.
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may