Подтвердить что ты не робот

Компонент для ввода и интерпретации 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.

4b9b3361

Ответ 1

JSF по умолчанию удаляет HTML из свойств bean, чтобы предотвратить отверстия для атаки XSS. Чтобы отключить это, просто установите атрибут escape в <h:outputText> на false.

<h:outputText ... escape="false" />

Таким образом, HTML не будет экранирован и, таким образом, будет интерпретирован веб-браузером.


Несвязанный к конкретной проблеме, остерегайтесь атак XSS, поскольку вы здесь, в основном, перерисовываете управляемый пользователем вход без сохранения. Возможно, вы захотите его заранее дезинфицировать.