Я пытаюсь создать компонент на основе freemarker в OpenText TeamSite / LiveSite 16. Я создал собственный скин freemarker:
В области «Внешний вид» я поместил следующий код:
<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.
Любая помощь приветствуется.