2008-11-14 9 views
100

écrire une page JSP, qu'est-ce que exactement le <c:out> faire? Je l'ai remarqué que les éléments suivants à la fois le même résultat:JSP: tag JSTL <c:out>

<p>The person's name is <c:out value="${person.name}" /></p> 
<p>The person's name is ${person.name}</p> 

Répondre

144

c:out échappe caractères HTML afin que vous pouvez éviter les scripts intersites.

si person.name = <script>alert("Yo")</script>

le script sera exécuté dans le second cas, mais pas lorsque vous utilisez c:out

+1

Seulement si 'escapeXML' est mis à vrai (pas sûr si c'est par défaut) –

+16

Je crois que c'est vrai par défaut. –

+7

N.B. il échappe XML et non HTML. Une des subtilités les plus agaçantes de JSTL. Je finis toujours par écrire mon propre échappement HTML EL fn. –

3

les anciennes versions de JSP ne prennent pas en charge la seconde syntaxe.

+0

Pourquoi le downvote? – Thilo

116

Comme Will Wagner dit, dans l'ancienne version de jsp, vous devriez toujours utiliser c:out au texte dynamique de sortie.

De plus, en utilisant cette syntaxe:

<c:out value="${person.name}">No name</c:out> 

vous pouvez afficher le texte "No Name" lorsque le nom est nul.

+22

Cool! Je ne le savais pas. –

+0

D'accord, cool. Merci d'enseigner et d'aider. Je ne le savais pas non plus. À votre santé! –

+18

ou Ce – gmustudent

5

Vous pouvez activer explicitement échapper à des entités Xml en utilisant un attribut valeur escapeXml égale à true. Pour info, c'est par défaut "vrai".

+0

Un exemple de code aiderait vraiment à compléter cette réponse. – RachelC