2008-11-14 24 views
100

Escribiendo una página JSP, ¿qué hace exactamente el <c:out>? Me he dado cuenta de que el siguiente tanto tiene el mismo resultado:JSP: etiqueta <c:out> de JSTL

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

Respuesta

144

c:out escapa de los caracteres HTML para evitar las secuencias de comandos entre sitios.

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

se ejecutará la secuencia de comandos en el segundo caso, pero no cuando se utiliza c:out

+1

Solo si 'escapeXML' se establece en verdadero (no estoy seguro si es por defecto) –

+16

Creo que es cierto por defecto. –

+7

N.B. escapa XML no HTML. Una de las sutilezas más molestas de JSTL. Siempre termino escribiendo mi propio escape HTML EL fn. –

3

antiguas versiones de JSP no apoyaron la segunda sintaxis.

+0

¿Por qué el voto a favor? – Thilo

116

Como se ha dicho Will Wagner, en la versión antigua de JSP siempre se debe utilizar c:out a la salida de texto dinámico.

Por otra parte, con esta sintaxis:

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

se puede visualizar el texto "Sin Nombre" cuando el nombre es nulo.

+22

¡Genial! No sabía eso. –

+0

De acuerdo, genial. Gracias por enseñar y ayudar. Yo tampoco lo sabía. ¡Aclamaciones! –

+18

o gmustudent

5

Puede habilitar explícitamente el escape de entidades Xml utilizando un atributo escapeXml value igual a true. FYI, es por defecto "verdadero".

+0

Algún código de ejemplo realmente ayudaría a completar esta respuesta. – RachelC

Cuestiones relacionadas