2012-09-30 3 views
11

Uso PrimeFaces con JSF 2.0 per creare un'applicazione. Uso il componente PrimeFaces <p:editor> per consentire all'utente di creare testo RTF. Ma l'uscita di questo componente è sorgente HTML che simile a questa:Componente per iniettare e interpretare Stringa con codice HTML nella pagina JSF

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

Quando mostro questo in un <h:outputText> come di seguito:

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

poi mostra il codice HTML come testo normale:

<p> Questo testo <i> contiene </i > alcuni <b> HTML </b > codice. <

C'è qualche componente che può interpretare la sorgente HTML in modo tale che ad es. <i> viene effettivamente visualizzato in corsivo e <b> come grassetto?

Questo testo contiene alcuni HTML codice.

risposta

21

JSF per impostazione predefinita esegue il escape dell'HTML dalle proprietà di backing bean al fine di evitare i fori di attacco XSS. Per disabilitare questo, basta impostare l'attributo escape di <h:outputText> a false.

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

In questo modo l'HTML non sarà scappato e sarà quindi interpretato dal browser web.


Estranei al problema concreto, fate attenzione di attacchi XSS, come si sta qui in fondo si mostra di nuovo senza caratteri di escape in ingresso controllata dall'utente. Potresti voler disinfettare in anticipo.