2012-06-11 2 views
3

Я хочу заменить определенные символы своими соответствующими объектами HTML в ответе HTML внутри фильтра. Персонажи включают <, >, &. Я не могу использовать replaceAll(), поскольку он заменит все символы, даже те, которые являются частью тегов HTML.Заменить символы объектами HTML в java

Каков наилучший способ для этого?

+0

Если одна строка уже была сформирована, которая содержит смесь HTML-теги и автономных символов, таких как '<', то это, вероятно, слишком поздно. Можете ли вы не кодировать HTML-данные в формате * * до того, как они будут включены внутри тегов? –

+0

Мои границы приложений не позволяют мне делать это раньше :( – user1448652

+1

Но просто подумайте - если бы это было возможно * сделать это надежно с полностью сформированными строками, вам не понадобилось бы * делать кодирование - веб-браузеры использовали бы независимо от того, что этот волшебный метод состоит в том, чтобы отличать теги от общего текста. –

ответ

1

Если вы используете такую ​​технологию, как JSTL, вы можете просто распечатать значение с помощью <c:out value="${myObject.property}"/>, и оно будет автоматически экранировано.

Атрибут escapeXml по умолчанию является true.

escapeXml - Определяет, должны ли символы <,>,&,'," в результате строки должны быть преобразованы в соответствующие мнемоники коды. Значение по умолчанию: true.

http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/

+0

У меня нет контроля над приложением до его появления я как HTML-ответ. – user1448652

9

От Java вы можете попробовать, Apache Commons Lang (наследие v2) StringEscapeUtils.escapeHtml().
или с обыкновенным листом3: StringEscapeUtils.escapeHtml4().

Пожалуйста, обратите внимание также преобразует à в &agrave; & такие

+0

Это лучшее, ИМХО, лучшее решение –

+0

Простой, чистый и отлично работает в Groovy. –

+2

Также стоит отметить: если вы (уже) используете веб-фреймворк, есть хороший шанс, что подобная функция уже встроена в фреймворк. Например, Spring имеет HtmlUtils.htmlEscape(), описанную здесь: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/HtmlUtils.html – Josh1billion

Смежные вопросы