📄 test.java
字号:
package com.newegg.test;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.wst.ws.internal.common.BundleUtils;
import com.newegg.eclipse.soaw.facet.codegen.ui.plugin.CodeGenPlugin;
import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.core.Environment;
import freemarker.core.LibraryLoad;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.ObjectWrapper;
import freemarker.template.SimpleHash;
import freemarker.template.Template;
import freemarker.template.TemplateHashModel;
import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;
public class Test
{
public static void main(String[] args) throws Exception
{
Configuration cfg = new Configuration();
// Specify the data source where the template files come from.
// Here I set a file directory for it:
// IPath templatePath =
// BundleUtils.getJarredPluginPath(CodeGenPlugin.PLUGIN_ID).append("template/test/");
FileTemplateLoader ftl1 = new FileTemplateLoader(new File("template/test/"));
FileTemplateLoader ftl2 = new FileTemplateLoader(new File("template/common"));
FileTemplateLoader ftl3 = new FileTemplateLoader(new File("template/"));
ClassTemplateLoader ctl = new ClassTemplateLoader(Test.class, "");
TemplateLoader[] loaders = new TemplateLoader[]
{ ftl1, ftl2, ftl3, ctl };
MultiTemplateLoader mtl = new MultiTemplateLoader(loaders);
cfg.setTemplateLoader(mtl);
// cfg.setDirectoryForTemplateLoading(new File("template/test/"));
// Specify how templates will see the data model. This is an advanced topic...
// but just use this:
cfg.setObjectWrapper(new DefaultObjectWrapper());
// cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
// cfg.setSharedVariable("shareVar", new ShareVar("shareName1", "shareName2"));
// Create the root hash
SimpleHash root = new SimpleHash();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new File("test/com/newegg/test/xml/theXml.xml")));
// Environment e = Environment.getCurrentEnvironment();
// TemplateHashModel thm = e.getDataModel();
// Put string ``user'' into the root
// root.put("user", "Big Joe");
// // Create the hash for ``latestProduct''
// Map latest = new HashMap();
// // and put it into the root
// root.put("latestProduct", latest);
// root.put("shareVar", new ShareVar("shareName1", "shareName2"));
// // put ``url'' and ``name'' into latest
// latest.put("url", "products/greenmouse.html");
// latest.put("name", "green mouse");
// expose a "simple" java objects:
root.put("theString", "wombat");
// expose an "arbitrary" java objects:
/**
* 下面两个方法是一样的,后者的变量是全局的
*/
// root.put("theObject", new TestObject("green mouse", 1200));
cfg.setSharedVariable("theObject", new TestObject("green mouse", 1200));// 它是非线程安全的
root.put("indexOf", new IndexOfMethod());
root.put("upperCase", new UpperCaseTransform());
List childList = new ArrayList();
for (int i = 0; i < 20; i++)
{
childList.add("name" + i + ":" + i);
}
root.put("childList", childList);
Template temp = cfg.getTemplate("test.ftl");
// System.out.println(temp.toString());
Writer out = new OutputStreamWriter(System.out);
// InputStream in = new BufferedInputStream(new FileInputStream(out));
temp.process(root, out);
out.flush();
// String outputCharset = "UTF-8";
// Writer w = new OutputStreamWriter(out, outputCharset);
// Environment env = temp.createProcessingEnvironment(new IndexOfMethod(), w);
// env.setOutputEncoding(outputCharset);
// env.process();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -