2012-09-30 23 views
11

Estoy usando PrimeFaces con JSF 2.0 para compilar una aplicación. Estoy usando el componente PrimeFaces <p:editor> para permitir al usuario crear texto enriquecido. Pero la salida de este componente es de código HTML que se parecen a esto:Componente para insertar e interpretar Cadena con código HTML en la página JSF

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

Cuando le muestro esto en un <h:outputText> de la siguiente manera:

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

A continuación se muestra el código HTML como texto sin formato:

<p> Este texto <i> contiene </i > algunos <b> HTML </b > código. </p >

¿Hay algún componente que puede interpretar el código HTML de manera que, por ejemplo, <i> se muestra en cursiva y <b> en negrita?

Este texto contiene algunos HTML código.

Respuesta

21

JSF escapa por defecto de HTML de las propiedades de los beans de respaldo para evitar agujeros de ataque XSS. Para desactivar esto, simplemente configure el atributo escape del <h:outputText> en false.

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

De esta forma, el código HTML no se escapará y, por lo tanto, será interpretado por el navegador web.


Sin relación al problema concreto, tenga cuidado con los ataques XSS ya que estás aquí, básicamente, volver a mostrar sin escapar de entrada controlada por el usuario. Es posible que desee desinfectarlo de antemano.

Cuestiones relacionadas