преобразование HTML в текст - PullRequest
0 голосов
/ 01 апреля 2011

Я работаю с JSF.Я использовал RichFaces RichEditor.Я храню содержимое этого редактора в bean-компоненте и отображаю в форме JSF.Но он показывает HTML-теги в форме JSF.Для этого я использовал JSoup HTML Parser.Но он полностью преобразует написанное содержимое многофункционального редактора в простой текст, удаляя все форматирование, такое как жирный шрифт, используемые кнопки, перевод строки и т. Д. Мне нужно отобразить его в виде редактора в форме jSF.help ...

КОД для 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>   

ОТ Java ....

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 ]

1 голос
/ 01 апреля 2011

Когда вы повторно отображаете его, используя <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());
}

The Whitelist настраивается.См. Также его javadoc для получения подробной информации.

0 голосов
/ 01 апреля 2011

в вашем источнике отсутствует открытый тег расширенного редактора. Согласно редакторам домашней страницы попробуйте добавить параметр viewMode. Я думаю, что ценность этого должна быть «визуальной».

...