JSP: etiqueta <c: out> de JSTL


110

Escribiendo una página JSP, ¿qué hace exactamente <c:out>? He notado que lo siguiente ambos tienen el mismo resultado:

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

Respuestas:


153

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

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

el script se ejecutará en el segundo caso, pero no cuando se usa c:out


2
Solo si 'escapeXML' se establece en verdadero (no estoy seguro si es de forma predeterminada)
Chris Serra

17
Creo que es verdad por defecto.
Zack The Human

7
Nota: escapa a XML, no a HTML. Una de las sutilezas más molestas de JSTL. Siempre termino escribiendo mi propio HTML escape EL fn.
Adam Gent

4
El nombre del atributo distingue entre mayúsculas y minúsculas, por lo que es escapeXml = "true" no escapeXML
Mark Chorley

2
No tengo idea de lo que muestra el ejemplo de código de esta respuesta, ¿alguien puede aclararlo? Menciona un "segundo caso" pero no veo eso y no veo que c: out se use en el código.
IcedDante

126

Como dijo Will Wagner, en la versión anterior de jsp siempre debe usar c:outpara generar texto dinámico.

Además, usando esta sintaxis:

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

puede mostrar el texto "Sin nombre" cuando el nombre es nulo.


24
¡Frio! No sabía eso.
Adam Asham

De acuerdo, genial. Gracias por enseñar y ayudar. Yo tampoco lo sabía. ¡Salud!
B-Money

20
o <c: out value = "$ {person.name}" default = "Sin nombre" />
gmustudent

2
JSR 52, versión de mantenimiento 2, ver página 22 "con cuerpo". Enlace: download.oracle.com/otndocs/jcp/jstl-1.2-mrel2-eval-oth-JSpec
Barett

1
@Barett. Frio. Me pregunto por qué esto nunca hace ninguno de los tutoriales o ejemplos. Una sintaxis más conveniente que el atributo predeterminado IMO.
Thilo


5

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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.