I want my own template loader for FreemarkerServlet. So I need to override
"factory creation" method. I've attached a diff for this.
How to use it:
1) extend FreemarkerServlet:
-----------------------------------------------
public class CMSFreemarkerServlet extends FreemarkerServlet {
protected void processTemplatePath(String templatePath) throws
IOException {
if (templatePath.startsWith("custom")) {
Configuration cfg = getConfiguration();
cfg.setTemplateLoader(new CMSSnippetLoader());
}
else {
super.processTemplatePath(templatePath);
}
}
class CMSSnippetLoader implements TemplateLoader {
public Object findTemplateSource(String name) throws IOException {
// HERE YOU CAN LOAD YOUR TEMPLATE
String snippetName = name.replace(".snippet", "");
return findSnippetByName(snippetName);
}
public long getLastModified(Object templateSource) {
return System.currentTimeMillis();
}
public Reader getReader(Object templateSource, String encoding)
throws IOException {
return new StringReader(((Snippet)templateSource).getValue());
}
public void closeTemplateSource(Object templateSource) throws
IOException {
}
}
}
---------------------------------------
2) in web.xml:
---------------------------------------
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>CMSFreemarkerServlet</servlet-class>
<!-- FreemarkerServlet settings: -->
<init-param>
<param-name>TemplatePath</param-name>
<param-value>custom</param-value>
</init-param>
<!-- other stuff -->
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.snippet</url-pattern>
</servlet-mapping>
-------------------------------------
3) Now you can include snippet:
-------------------------------------
RequestDispatcher disp =
request.getRequestDispatcher("coolsnippet.snippet");
disp.include(request, response);
-------------------------------------
Nobody/Anonymous ( nobody ) - 2008-02-13 09:41
5
Closed
Fixed
Attila Szegedi
Loading and caching
None
Public
|
Date: 2008-05-08 13:54
|
|
Date: 2008-04-28 19:01 Logged In: NO |
|
Date: 2008-03-04 11:52
|
| Filename | Description | Download |
|---|---|---|
| custom_template_loader.patch | patch for freemarker 2.3.11 | Download |
| Field | Old Value | Date | By |
|---|---|---|---|
| status_id | Open | 2008-05-08 13:54 | ddekany |
| close_date | - | 2008-05-08 13:54 | ddekany |
| resolution_id | None | 2008-03-04 11:52 | szegedia |
| assigned_to | nobody | 2008-03-04 11:52 | szegedia |
| File Added | 266138: custom_template_loader.patch | 2008-02-13 09:41 | nobody |
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use