Преобразование HTML в текст
Я работаю с JSF. Я использовал RichFaces RichEditor. Я храню содержимое этого редактора в bean-компоненте и отображаю в форме JSF. Но он показывает HTML-теги в форме JSF. Для этого я использовал JSoup HTML Parser. Но он полностью преобразует написанное содержимое многофункционального редактора в простой текст, удаляя все форматирование, например жирный шрифт, используемые кнопки, новую строку и т. Д. Мне нужно отобразить его в виде редактора в форме jSF.
Пожалуйста помоги...
КОД для Rich Editor
<f:param name="theme_advanced_buttons1" value="
newdocument,separator,copy,cut,paste,pasteword,undo,redo,separator,bold,italic,underline,
strikethrough,forecolor,backcolor,separator,
justifyleft,justifycenter,justifyright,justifyfull,outdent,indent " />
<f:param name="theme_advanced_buttons2" value= "bullist,numlist,separator,
insertdate,inserttime,separator,image,emotions,styleprops,fontselect,fontsizeselect,formatselect,search,replace"/>
<f:param name="theme_advanced_toolbar_location" value="top"/>
<f:param name="theme_advanced_toolbar_align" value="left"/>
<f:param name="theme_advanced_font_sizes" value="10px,12px,14px,16px,18px,20px,24px,32px,36px,42px,48px,60px,72px"/>
<f:param name="theme_advanced_fonts" value="Andale Mono=andale mono,times;
Arial=arial,helvetica,sans-serif;
Arial Black=arial black,avant garde;
Book Antiqua=book antiqua,palatino;
Calibri=calibri;
Comic Sans MS=comic sans ms,sans-serif;
Courier New=courier new,courier;
Georgia=georgia,palatino;
Helvetica=helvetica;
Impact=impact,chicago;
Symbol=symbol;
Tahoma=tahoma,arial,helvetica,sans-serif;
Terminal=terminal,monaco;
Times New Roman=times new roman,times;
Trebuchet MS=trebuchet ms,geneva;
Verdana=verdana,geneva;
Webdings=webdings;
Wingdings=wingdings,zapf dingbats"/>
</rich:editor>
ИЗ ЯВЫ....
public String saveNotice () {
System.out.println(html2text(editor));
return "";
}
public String html2text(String editor)
{
String edit;
edit=Jsoup.parse(editor).text();
setEditor(edit);
return edit;
}
2 ответа
Когда вы перерисовываете его, используя <h:outputText>
JSF избежит их, чтобы предотвратить атаки XSS. Вам нужно добавить escape="false"
заново отобразить HTML-код (который интерпретируется веб-браузером).
<h:outputText value="#{bean.html}" escape="false" />
Тем не менее, это все еще потенциальная дыра XSS. Поскольку вы уже используете Jsoup, вы можете использовать Jsoup#clean()
сохранить некоторые основные теги HTML и удалить все другие вредоносные теги.
public String sanitizeHtml(String html) {
return Jsoup.clean(unsafe, Whitelist.basic());
}
Whitelist
настраиваемый. Смотрите также его Javadoc для деталей.
В вашем источнике отсутствует открытый тег расширенного редактора. По словам редакторов домашней страницы попробуйте добавить параметр viewMode. Я думаю, что ценность этого должна быть "визуальной".