El mejor método de programación JSP: Utilizar el atributo escapeXml para conservar el formato HTML

De forma predeterminada, el valor del atributo escapeXml del código JSTL <c:out> es true. Este comportamiento predeterminado garantiza que los caracteres especiales HTML como, por ejemplo<, >, &, ' o ", contenidos en las series de salida se conviertan a sus códigos de entidad de caracteres correspondientes y se visualicen correctamente en la página HTML que genera la página JSP. No obstante, en algunos ejemplos de tienda de HCL Commerce, este comportamiento es contraproducente. Un ejemplo de este tipo es la visualización de precios en las tiendas globalizadas:

Importante: Establezca el atributo escapeXML en false únicamente cuando acceda a parámetros internos, no a parámetros o atributos que se especifican en el URL. Las páginas están expuestas a un ataque XSS cuando se utilizan parámetros URL sin caracteres de escape.

<c:out value="${product.listPrice}" />

Dado que el símbolo del yen japonés, yen, se visualiza utilizando la entidad de caracteres denominada &yen;, la conversión predeterminada dará como resultado la visualización del precio de 3.544 yen que se muestra como &yen;3,544.

Para impedir la conversión, debe establecerse escapeXml de forma explícita en false del modo siguiente:


<c:out value="${product.listPrice}" escapeXml="false" />

Otro ejemplo común es visualizar el texto proporcionado por el usuario, por ejemplo, las descripciones de los productos o los mensajes de texto dinámicos. Si espera que los usuarios avanzados utilicen códigos HTML para dar formato, por ejemplo, saltos de líneas o listas numeradas, establezca el atributo escapeXml del código <c:out> que se utiliza para visualizar el texto en false como en el ejemplo siguiente:


<c:out value="${productPromotion.longDescriptionString}"
escapeXml="false" />