0

Restlet でテンプレート表現を機能させるのに問題があります。

コンテンツ以外は似ている 3 つのページがあるため、テンプレート表現を使用しています (つまり、ヘッダー、ナビゲーション、フッターは同じです): index.html、services.html、contact.html テンプレート表現を使用すると便利です。ナビゲーション バーまたはフッターを変更する必要がある場合は、1 か所 (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 に答える