Apache FreeMarker - 1.1
Extension ID
com.castsoftware.java.freemarker
What’s new?
Please see Release Notes for more information.
Description
This extension provides support for Apache FreeMarker Framework.
In what situation should you install this extension?
If your Java application uses the Apache FreeMarker Framework.
Technology support
Component | Version | Supported | Supported Technology |
---|---|---|---|
Apache FreeMarker Framework | 2.3.x | ✔️ | Java |
spring-context-support | <=6.1.10 | ✔️ | Java |
spring-webmvc | <=6.1.10 | ✔️ | Java |
Compatibility
CAST Imaging Core release | Supported |
---|---|
8.3.x | ✔️ |
Download and installation instructions
The extension will not be automatically downloaded and installed in CAST Console. If you need to use it, should manually install the extension.
What results can you expect?
Objects
Icon | Description | Creation Context |
---|---|---|
Java Freemarker FTL Parameter | An object is created for each execution of template process APIs | |
Java Freemarker FTL Call | An object is created for each variable interpolation in ftl file |
Links
Link Type | Source and destination link | Supported Methods |
---|---|---|
relyonLink | Between Java Freemarker FTLParameter and and respective Data Model JAVA class | freemarker.template.Template.process org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate |
callLink | Between HTML source code objects(.ftl and similar files) and CallToFTL objects. | |
callLink | Between CallToFTL objects and JAVA methods. |
Code Example of Template Process API
Template Engine: MainTest.java
public static void main(String[] args) throws Exception {
Configuration cfg = new Configuration();
String content = null;
cfg.setClassForTemplateLoading(MainTest.class, "templates");
cfg.setIncompatibleImprovements(new Version(2, 3, 20));
cfg.setDefaultEncoding("UTF-8");
cfg.setLocale(Locale.US);
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
Map<String, Object> input = new HashMap<String, Object>();
input.put("title", "Dummy example");
List<ValueExampleObject> systems = new ArrayList<ValueExampleObject>();
systems.add(new ValueExampleObject("Android", "Google"));
systems.add(new ValueExampleObject("iOS States", "Apple"));
systems.add(new ValueExampleObject("Ubuntu", "Canonical"));
systems.add(new ValueExampleObject("Windows7", "Microsoft"));
input.put("systems", systems);
Cal cal=new Cal();
input.put("cal", cal);
input.put("exampleObject", new ValueExampleObject("Java object", "me"));
Template template = cfg.getTemplate("helloworld.ftl");
template.process(input, consoleWriter);
}
Data Model Class: Cal.java
public class Cal {
public int add(int a, int b) {
return a+b;
}
public int mul(int a, int b) {
return a*b;
}
}
Template: helloworld.ftl
<html>
<head>
<title>${title}
</head>
<body>
<h1>${title}</h1>
<p>${exampleObject.name} by ${exampleObject.developer}</p>
<ul>
<#list systems as system>
<li>${system_index + 1}. ${system.name} from ${system.developer}</li>
</#list>
</ul>
<h1>
2+3= ${cal.add(2,3)}
10/2= ${cal.mul(10,2)}
</h1>
<#assign multiplied = cal.mul(40,20)>
<h1>${multiplied}</h1>
</body>
</html>