Meilleures pratiques de programmation JSP : Utiliser l'attribut escapeXml pour préserver la mise en forme HTML
Par défaut, la valeur de l'attribut escapeXml de la balise JSTL <c:out> est true. Ce comportement par défaut garantit que les caractères spéciaux HTML, tels que <, >&, ', ou ", contenus dans les chaînes de résultat sont convertis en leurs codes d'entité de caractères correspondants et affichés correctement dans la page HTML générée par la page JSP. Dans certains scénarios de magasins HCL Commerce classiques, cependant, ce comportement est contre-productif. L'un de ces scénarios est l'affichage des prix dans les magasins mondialisés :
<c:out value="${product.listPrice}" />
Lorsque le symbole du yen japonais,
, est affiché à l'aide de l'entité de caractère nommée ¥, la conversion par défaut se traduira par l'affichage du prix de 3 544
sous la forme ¥3,544.
Pour empêcher la conversion, escapeXml doit être explicitement défini sur false comme suit :
<c:out value="${product.listPrice}" escapeXml="false" />
Un autre scénario courant est l'affichage du texte fourni par l'utilisateur, tel que des descriptions de produits ou des messages texte dynamiques. Si vous vous attendez à ce que les utilisateurs avancés utilisent des balises HTML pour la mise en forme, telles que des sauts de ligne ou des listes à puces, définissez l'attribut escapeXml de la balise <c:out> utilisée pour afficher le texte sur false comme dans l'exemple suivant :
<c:out value="${productPromotion.longDescriptionString}"
escapeXml="false" />