Java Mailing List Archive

http://www.junlu.com/

Home » FreeMarker-user »

Re: [FreeMarker-user] Detect invalid directives

Daniel Dekany

2011-10-19

Replies: Find Java Web Hosting

Author LoginPost Reply
Wednesday, October 19, 2011, 6:11:33 PM, John R. Todd wrote:

> On 10/19/11 09:36, Denis Bredelet wrote:
>> On 19 Oct 2011, at 14:46, Daniel Dekany<ddekany@(protected):
>>
>>> Wednesday, October 19, 2011, 2:11:51 PM, John Todd wrote:
>>>
>>>> On 10/19/11 04:29, Daniel Dekany wrote:
>>>>> Wednesday, October 19, 2011, 5:55:18 AM, John Todd wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>>  I would like to handle invalid directives however they are just
>>>>>> passing through the templating engine as text, e.g. using the following
>>>>>> FTL "blah.ftl":
>>>>>>
>>>>>> This is [#blah]content[/#blah]. This is [#fu] content.
>>>>> That's not possible, unless you pre-process the templates with a
>>>>> custom TemplateLoader that replaces "[#blah]" with "[[#-- --]#blah]"
>>>>> or like.
>>>>>
>>>>> Out of curiosity, why do you need this?
>>>> We use the templating engine extensively for on-demand personalization
>>>> of content and would like to reject templating requests at the time the
>>>> template is passed to our system if the template contains unknown
>>>> directives and just reject the request.
>>>>
>>>> So, you're saying it's not possible to catch such exceptions or the
>>>> behavior I'm seeing is not possible?
>>> Sorry, I was hasty and misread your question. FreeMarker should throw
>>> exception for invalid # tags always and everywhere. However, now that
>>> I have tried this, it seems it bypasses the # tags until it finds one
>>> that it knows. It's astonishing that I have never ran into this bug
>>> myself, and it's quite concerning that the author didn't have a test
>>> case that catches this. I suppose it slipped in when tag-syntax
>>> detection was added. It can't be straight fixed in 2.3.x as it would
>>> be non-BC, except by adding some new option. The workaround for this
>>> right now is starting all templates with [#ftl]...
>> Is this only for the square bracket syntax? It makes sense to start the template with [#ftl] anyway, instead of relying on auto-detection...
>
> I see the same behaviour whether it's using the square or angle bracket
> syntax. But the [#ftl] does generate the expected parse exception.

Or if you check out

https://freemarker.svn.sourceforge.net/svnroot/freemarker/branches/2.3/freemarker

and build it with ant (sorry, the nightly builder site seems to be
down ATM), and then use

cfg.setEmulate23ParserBugs(false);

it should work correctly even without [#ftl]. (The more people test it
the better...)

--
Best regards,
Daniel Dekany


> thx,
> jt
>> -- Denis.
>>
>>>> thx,
>>>> jt
>>>>
>>>>>> and the code:
>>>>>>
>>>>>> public class App {
>>>>>>
>>>>>>   public static void main(String[] args) throws Exception {
>>>>>>      Configuration cfg = new Configuration();
>>>>>>      cfg.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX);
>>>>>>
>>>>>>      cfg.setDirectoryForTemplateLoading(new
>>>>>> File(System.getProperty("user.dir")));
>>>>>>
>>>>>>      System.out.println("Compiling template: blah.ftl");
>>>>>>      FileReader reader = new
>>>>>> FileReader(System.getProperty("user.dir") + "/blah.ftl");
>>>>>>      // Expect ParseException
>>>>>>      Template template = new Template("blah.ftl", reader, cfg);
>>>>>>
>>>>>>      System.out.println("Getting template from Configuration.");
>>>>>>      // Also expect ParseException
>>>>>>      template = cfg.getTemplate("blah.ftl");
>>>>>>      StringWriter writer = new StringWriter();
>>>>>>      template.process(new HashMap(), writer);
>>>>>>      System.out.println("Output: " + writer.toString());
>>>>>>   }
>>>>>> }
>>>>>>
>>>>>> I get the output:
>>>>>>
>>>>>> This is [#blah]content[/#blah]. This is [#fu] content.
>>>>>>
>>>>>> In each Template reference, I'm expecting a compilation error w/
>>>>>> "Unknown directive" per the FMParser.jj grammar. Any suggestions?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> John T.
>>>>
>>>> ------------------------------------------------------------------------------
>> ------------------------------------------------------------------------------
>> All the data continuously generated in your IT infrastructure contains a
>> definitive record of customers, application performance, security
>> threats, fraudulent activity and more. Splunk takes this data and makes
>> sense of it. Business sense. IT sense. Common sense.
>> http://p.sf.net/sfu/splunk-d2d-oct
>> _______________________________________________
>> FreeMarker-user mailing list
>> FreeMarker-user@(protected)
>> https://lists.sourceforge.net/lists/listinfo/freemarker-user
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure contains a
> definitive record of customers, application performance, security
> threats, fraudulent activity and more. Splunk takes this data and makes
> sense of it. Business sense. IT sense. Common sense.
> http://p.sf.net/sfu/splunk-d2d-oct
> _______________________________________________
> FreeMarker-user mailing list
> FreeMarker-user@(protected)
> https://lists.sourceforge.net/lists/listinfo/freemarker-user
>


------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@(protected)
about Cisco certifications, training, and career opportunities.
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
FreeMarker-user mailing list
FreeMarker-user@(protected)
https://lists.sourceforge.net/lists/listinfo/freemarker-user
©2008 junlu.com - Jax Systems, LLC, U.S.A.