Компонент для ввода и интерпретации String с кодом HTML на страницу JSF
Я использую PrimeFaces с JSF 2.0 для создания одного приложения. Я использую компонент PrimeFaces <p:editor>
, чтобы пользователь мог создавать богатый текст. Но выход этого компонента является источником HTML, который выглядит следующим образом:
String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>";
Когда я покажу это в <h:outputText>
, как показано ниже:
<h:outputText value="#{bean.text}" />
Затем он показывает код HTML как обычный текст:
Этот текст содержит </i> некоторый <b> HTML </b> . Код </р >
Есть ли какой-либо компонент, который может интерпретировать источник HTML так, чтобы, например, <i>
на самом деле отображается курсивом, а <b>
- полужирным шрифтом?
Этот текст содержит некоторый код HTML.
Ответы
Ответ 1
JSF по умолчанию удаляет HTML из свойств bean, чтобы предотвратить отверстия для атаки XSS. Чтобы отключить это, просто установите атрибут escape
в <h:outputText>
на false
.
<h:outputText ... escape="false" />
Таким образом, HTML не будет экранирован и, таким образом, будет интерпретирован веб-браузером.
Несвязанный к конкретной проблеме, остерегайтесь атак XSS, поскольку вы здесь, в основном, перерисовываете управляемый пользователем вход без сохранения. Возможно, вы захотите его заранее дезинфицировать.