我在使用Restlet工作模板表示时遇到问题。
我正在使用模板表示法,因为我有3个页面,与内容相似(即标题,导航和页脚是相同的): index.html,services.html,contact.html 使用模板表示将非常有用,因为如果我需要更改导航栏或页脚,那么我只需要在一个地方(template.html)进行操作
我已将FreeMarker jar添加到我的构建路径中,我可以访问模板数据。
我正在尝试一些基本的东西:
@Get
public Representation represent() {
return new TemplateRepresentation("template.html", new Configuration(), MediaType.TEXT_HTML);
}
我希望template.html
中的所有内容都显示在浏览器上。但我在控制台中收到错误No template found
以下是我文件结构的简化版本。
Java Resources
- src
- Application.java
- IndexResource.java (This class contains the template representation to show the index page)
Web Content
- WEB-INF
- template.html
答案 0 :(得分:1)
实际上我认为你需要在配置实例上指定一个适当的模板加载器。这将允许Freemarker知道在何处以及如何找到模板...
org.restlet.Context context = (...)
Configuration configuration = new Configuration();
ContextTemplateLoader loader1 = new ContextTemplateLoader(context, "file://<DIR1>");
ContextTemplateLoader loader2 = new ContextTemplateLoader(context, "file://<DIR2>");
MultiTemplateLoader loaders = new MultiTemplateLoader(
new TemplateLoader[] { loader1, loader2 });
configuration.setTemplateLoader(loaders);
您可以在地址http://freemarker.sourceforge.net/docs/api/freemarker/cache/TemplateLoader.html找到TemplateLoader接口的所有受支持的实现。我认为WebappTemplateLoader实现可能是您正在寻找的那个......
希望它对你有所帮助。 亨利