【发布时间】:2014-05-26 13:50:44
【问题描述】:
我想从一个或多个 URL 加载 Freemarker 模板,因此我继承了 URLTemplate 加载器类并覆盖了 getURL(..) 方法以返回目标 URL(见下文)。然后我将这个类的几个实例添加到多模板加载器中,并将其添加到 Freemarker 配置中。当第一个 URL 返回一个模板但没有调用其他模板加载器时,这可以正常工作。我做错了什么?我正在通过 Restlet 框架使用 Freemarker v2.3。
: : : : : : : : : :
TemplateLoader[] loaders = new TemplateLoader[] {
new MyTemplateLoader(new URL(request.getRootRef() + app.getRoot())),
new MyTemplateLoader(new URL(request.getRootRef() + "/"))
};
freemarkerConfig.setTemplateLoader(new MultiTemplateLoader(loaders));
: : : : : : : : : :
public class MyTemplateLoader extends URLTemplateLoader {
private URL root;
public MyTemplateLoader(URL root) {
super();
this.root = root;
}
@Override
protected URL getURL(String template) {
try {
URL tu = new URL(root, "./" + template);
return tu;
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
}
【问题讨论】:
标签: freemarker restlet