Компонент на основе Freemarker - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать компонент на основе freemarker в OpenText TeamSite / LiveSite 16. Я создал собственный скин freemarker:

enter image description here

В области «Внешний вид» я поместил следующий код:

<h1>${doc.book.title}</h1>

<h2>${doc.book.chapter[0].title}</h2>
<h2>${doc.book.chapter[1].title}</h2>

<#list doc.book.chapter as ch>
  <h2>${ch.title}</h2>
</#list>

<h1>${doc.book[0].title[0]}</h1>`

Этот шаблон был взят из официальной документации Freemarker здесь .

"Контекст XML"area:

<Data>
  <External>
    <Object Scope="local">com.sayHello.Books</Object>
    <Method>books</Method>
  </External>
</Data>

Это вызовет метод" books ", который вернет XML-документ:

public Document books(RequestContext context) {
    Document doc = Dom4jUtils.newDocument();

    Element docElement = DocumentHelper.createElement("book");

    docElement.addElement("title").addText("Test Book");

    Element chapterElement = DocumentHelper.createElement("chapter");

    chapterElement.addElement("title").addText("Chapter 1");

    Element anotherChapterElement = DocumentHelper.createElement("chapter");

    anotherChapterElement.addElement("title").addText("Chapter 2");

    docElement.add(chapterElement);

    docElement.add(anotherChapterElement);

    doc.add(docElement);

    return doc;
}

При каждом предварительном просмотре компонента появляется следующая ошибка:

2018-10-10 10:26:32,528 ERROR [freemarker.runtime] Error executing FreeMarker template
FreeMarker template error:
For "${...}" content: Expected a string or something automatically convertible to string (number, date or boolean), or "template output" , but this has evaluated to a sequence+hash (wrapper
==> doc.book.title  [in template "template" at line 2, column 7]


Tip: This XML query result can't be used as string because for that it had to contain exactly 1 XML node, but it contains 0 nodes. That is, the constructing XML query has found no matches.

FTL stack trace ("~" means nesting-related):
    - Failed at: ${doc.book.title}  [in template "template" at line 2, column 5]

Я предполагаю, что не правильно обращаюсь к элементам шаблона внутри TeamSite, шаблон Freemarker отлично работает вне TeamSite.

Любая помощь приветствуется.

...