2012-09-30 13 views
11

Używam PrimeFaces z JSF 2.0 do zbudowania jednej aplikacji. Używam komponentu PrimeFaces <p:editor>, aby umożliwić użytkownikowi tworzenie tekstu sformatowanego. Ale wyjście z tego komponentu jest źródło HTML, który wygląda tak:Komponenty do wstrzykiwania i interpretowania ciągu znaków z kodem HTML na stronie JSF

String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>"; 

Kiedy pokażę to w <h:outputText> jak poniżej:

<h:outputText value="#{bean.text}" /> 

to pokazuje kod HTML jako zwykły tekst:

<p> Ten tekst <i> zawiera </i > trochę < b Kod > HTML </b >. </p >

Czy istnieje jakiś składnik, który może zinterpretować źródło HTML, aby np. <i> jest rzeczywiście pokazywany jako kursywa i <b> jako pogrubiony?

Ten tekst zawiera niektóre kod HTML.

Odpowiedz

21

JSF domyślnie wymyka się HTML z kopii właściwości fasoli, aby zapobiec otwarciu ataku XSS. Aby to wyłączyć, ustaw atrybut escape dla <h:outputText> na false.

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

W ten sposób kod HTML nie zostanie zmieniony i zostanie zinterpretowany przez przeglądarkę internetową.


niezwiązane do konkretnego problemu, strzeż się ataków XSS jak jesteś tutaj w zasadzie ponowne wyświetlanie Niecytowany wejściowego użytkownika kontrolowane. Być może zechcesz najpierw ją odkażić.