让restlet模板表示工作

时间:2012-05-12 21:17:47

标签: java restlet

我在使用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

1 个答案:

答案 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实现可能是您正在寻找的那个......

希望它对你有所帮助。 亨利