Re: Detect invalid directives
"John R. Todd" <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
On 10/19/11 09:36, Denis Bredelet wrote: > On 19 Oct 2011, at 14:46, Daniel Dekany<[email protected]> wrote: > >> 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. 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 > [email 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