Автоматическое кодирование HTML-тегов из текста в UTF-8 в тегах Struts2

У меня возникла проблема с автоматическим кодированием текста в UTF-8 в теге Struts2.

Я хочу передать значение, содержащее тег HTML, из класса действий на страницу JSP, но в теге Struts это значение автоматически кодируется в UTF-8, а тег HTML отображается неправильно.

Например: у меня есть строковая переменная с именем param в классе действий.

String param=param[0] + "& <br>" + param[1];

И этот param передается на странице JSP и отображается на странице с помощью тега Struts:

<s:property value="%{param}">

Моя проблема в том, что на странице JSP тег <br> автоматически кодируется и отображается как &ltbr&gt вместо использования его как тег HTML.

Кто-нибудь знает, как я могу пропустить этот процесс автоматического кодирования?


person Ariana    schedule 23.06.2017    source источник


Ответы (2)


Пробовали ли вы использовать (задокументированный) атрибут escapeHtml?

<s:property value="%{param}" escapeHtml="false" />

PS: Два дополнительных примечания:

  1. Вы используете специальный символ & в HTML. Если вы не собираетесь экранировать строку, вы должны написать ее как &amp;

  2. Как метко указывает Роуэн С. в своем ответе, использование неэкранированного html на веб-странице может быть опасным, особенно если строка (в вашем случае массив param) является динамической и может быть установлена ​​клиентом. Если вы не можете доверять или должным образом дезинфицировать его, не делайте этого. Серьезно.

person leonbloy    schedule 23.06.2017

Тег s:property по умолчанию экранирует HTML-код, чтобы предотвратить нарушение безопасности XSS. . Если вы доверяете содержимому, отображаемому с помощью этого тега, вы можете использовать один из атрибутов escape, чтобы отключить этот процесс:

Name                Required    Default Evaluated   Type    Description
escapeCsv           false       false   false       Boolean Whether to escape CSV (useful to escape a value for a column)
escapeHtml          false       true    false       Boolean Whether to escape HTML
escapeJavaScript    false       false   false       Boolean Whether to escape Javascript
escapeXml           false       false   false       Boolean Whether to escape XML   

В своем коде вы можете использовать

<s:property value="%{param}" escapeHtml="false"/>
person Roman C    schedule 23.06.2017