Вопрос по html, escaping, java, stringbuilder – Написание HTML в строке

7

Я пытаюсь написать пару небольших строк HTML в моем классе Java, который получает некоторые данные из другого API. Я получаю данные в виде строки JSON, а затем хотел бы отобразить некоторые из них на веб-странице.

Чтобы создать HTML, я стараюсь:

<code>        StringBuilder sb = new StringBuilder();
    for(int i=0;i<leads.size();i++){
        sb.append("<p>Name: "+leads.get(i).getFirstName()+" "+leads.get(i).getLastName()+"</p>");
        sb.append("<p>Email: "+leads.get(i).getEmail()+"</p>");
        sb.append("<br />");
    }
    fullLeadData = sb.toString();
</code>

Но в итоге отображается буквальная интерпретация HTML-тегов. Есть ли способ, которым я могу создать эту строку, чтобы теги оставались тегами, а не экранированными символами?

Класс Java является управляемым компонентом, поэтому в HTML я имею:

<code>    <body>
    <div id="display">
        #{PortalView.fullLeadData}
    </div>
</body>
</code>

Где fullLeadData - это строка с HTML.

конкатенация строк внутри метода добавления не очень хорошая практика. ChadNC
обновил мой пост, отображая на этой веб-странице Webster Gordon
Где именно вы пытаетесь отобразить этот текст? Nitin Chhajer

Ваш Ответ

2   ответа
7

<div id="display">
    <h:outputText value="#{PortalView.fullLeadData}" escape="false"/>
</div>
Огромное спасибо, Гэмб! Webster Gordon
1

вам придется заменить escape-последовательности. Общие из них

‘&’ (ampersand)  ‘&amp;‘
‘"’ (double quote)  ‘&quot;‘
”’ (single quote)  ‘&#039;‘
‘<’ (less than)  ‘&lt;‘
‘>’ (greater than)  ‘&gt;‘

Похожие вопросы