2016-11-23 5 views
0

Freemarker:Как избежать «&» в данных, поступающих из webservice в шаблоне freemarker?

Если мои данные:

x = [{ 
    name= satyajit, 
    company = hewlett & packard 
}, { 
    name= akanksha, 
    company = google & co 
}] 

После, как я хочу, чтобы получить доступ к выше список в шаблоне FTL.

${x} 

Но приведенный выше код выдает ошибку, говоря: Название объекта должно следовать сразу за «&» в ссылках на объект.

Есть ли способ, чтобы избежать «&» в данных, как «&» в «HEWLETT & Паккард» из данных веб-сервиса в шаблоне Freemarker?

EDIT:

Ошибка столкнулась:

[Fatal Error] NewFile.xml:27:57: The entity name must immediately follow the '&' in the entity reference. 
Exception in thread "main" org.xml.sax.SAXParseException; systemId: file:/D:/NewFile.xml; lineNumber: 27; columnNumber: 57; The entity name must immediately follow the '&' in the entity reference. 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) 
+0

пытаются использовать '' & – Jens

+0

Эй @Jens, спасибо за ответ. Но использование '&' в моей ситуации не решит ситуацию, поскольку данные, поступающие из веб-службы, не могут быть изменены в соответствии с шаблоном ftl. –

+0

Здесь есть некоторые недоразумения. FTL не волнует, какую строку вы вставляете с помощью '$ {x}'. Он не анализирует, что вы вставляете, он может содержать что угодно, он просто печатает его на выходе. Можем ли мы увидеть фактическое сообщение об исключении? – ddekany

ответ

0

После поиска на некоторое время я обнаружил, что FreeMarker html может встроенный решить мою ситуацию. В моем случае здесь:

${x?html}

0

Wrap блоков текста в < #escape х как х HTML> директивы?.

public static final String ESCAPE_PREFIX = "<#ftl strip_whitespace=true><#escape x as x?html>"; 

public static final String ESCAPE_SUFFIX = "</#escape>"; 

ESCAPE_PREFIX + templateText + ESCAPE_SUFFIX 

См: http://freemarker.org/docs/dgui_misc_autoescaping.html

http://watchitlater.com/blog/2011/10/default-html-escape-using-freemarker/

+0

'# escape' устарел в пользу указания формата вывода HTML. Страница, которую вы связываете, пишет об этом тоже, а не о '# escape'. – ddekany