2010-11-02 16 views
0

Je travaille sur une application en Java. Je dois prendre les données HTML formées à partir d'un objet et l'afficher dans une table construite par displaytag. Cependant, il semble que par défaut, displaytag supprime le formatage par escapeHTML du contenu afin que mon format ne s'affiche pas correctement.displaytag surpresser le format HTML

Comme j'ai utilisé les données formatées pour mettre en surbrillance les mots de recherche correspondants dans la balise: <SPAN style='background-color:yellow;'></SPAN>. L'information affichée dans le résultat de la recherche était la syntaxe littérale. au lieu du fond jaune du mot. Comment puis-je supprimer le code HTML pour qu'il affiche l'arrière-plan en surbrillance?

Je suis prêt à utiliser l'attribut escapeXml. Toutefois, l'application a échoué en raison d'attributs non valides.

Merci,

Répondre

0

Est-ce que je comprends bien que vous voulez un-évasion échappé code HTML? Vous pouvez le faire quelque chose comme ceci:

public static String unescapeHtml(final String input){ 
    return input 
     .replace("&lt;", "<") 
     .replace("&gt;", ">") 
     .replace("&amp;", "&") 
     .replace("&quot;", "\""); 
} 
+0

Oui, mais je veux le faire dans le script jsp au lieu d'une autre classe – user495230

+0

Eh bien, vous pourriez bien sûr utiliser ce code dans un scriptlet, mais ce serait horrible. IMHO un JSP devrait seulement afficher des valeurs, donc je ferais cette transformation dans la classe de contrôleur. –

3

C'est bizarre. Selon displaytag documentation L'échappement XML est désactivé par défaut. Êtes-vous sûr que vous n'avez pas escapeXml="true" quelque part dans les balises?

Une autre raison pourrait être que vous utilisez la balise JSTL <c:out> pour afficher des valeurs individuelles. Il par défaut échappe XML. Vous pouvez le désactiver en ajoutant l'attribut escapeXml="false" à l'étiquette.

+0

J'ai essayé escapeXML = false dans l'instruction c: out; Cependant, toujours pas d'aide. – user495230

+0

Comme tout en Java, il est sensible à la casse. C'est 'escapeXml', pas' escapeXML'. – BalusC