Re: Detect invalid directives
Daniel Dekany <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
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<[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. 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 >> [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 > _______________________________________________ > FreeMarker-user mailing list > [email 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@Ciosco Self-Assessment and learn about Cisco certifications, training, and career opportunities. http://p.sf.net/sfu/cisco-dev2dev