0

我在让模板表示在 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
4

1 回答 1

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);

您可以在以下地址找到 TemplateLoader 接口的所有支持实现:http: //freemarker.sourceforge.net/docs/api/freemarker/cache/TemplateLoader.html。我认为 WebappTemplateLoader 实现可能是您正在寻找的那个......

希望它可以帮助你。蒂埃里

于 2012-05-15T15:06:05.707 回答