Este equipo redactor ha estado por horas buscando respuestas a tu búsqueda, te brindamos la solución por esto esperamos serte de gran ayuda.
Solución:
Facelets es una tecnología de visualización basada en XML que utiliza XHTML+XML para generar una salida HTML. XML tiene cinco caracteres especiales que tienen un tratamiento especial por parte del analizador XML:
<
el comienzo de una etiqueta.>
el final de una etiqueta."
el comienzo y el final de un attribute valor.'
el comienzo y el final alternativos de una attribute valor.&
el comienzo de una entidad (que termina con;
).
En caso de <
, el analizador XML está buscando implícitamente el nombre de la etiqueta y la etiqueta final >
. Sin embargo, en su caso particular, estaba utilizando <
como un operador de JavaScript, no como una entidad XML. Esto explica totalmente el error de análisis XML que obtuviste:
El contenido de los elementos debe consistir en datos de caracteres bien formados o marcado.
En esencia, está escribiendo código JavaScript en el lugar equivocado, un documento XML en lugar de un archivo JS, por lo que debe escapar todos los caracteres especiales XML en consecuencia. El <
debe ser escapado como <
.
Entonces, esencialmente, el
for (var i = 0; i < length; i++) {
debe convertirse
for (var i = 0; i < length; i++) {
para que sea válido para XML.
Sin embargo, esto hace que el código JavaScript sea más difícil de leer y mantener. Como se indica en el excelente documento de Mozilla Developer Network Escribir JavaScript para XHTML, debe colocar el código JavaScript en un bloque de datos de caracteres (CDATA). Por lo tanto, en términos JSF, eso sería:
El analizador XML interpretará el contenido del bloque como datos de caracteres "simples" y no como XML y, por lo tanto, interpretará los caracteres especiales XML "tal cual".
Pero, mucho mejor es simplemente poner el código JS en su propio archivo JS que incluye por , or in JSF terms, the
.
This way you don't need to worry about XML-special characters in your JS code. Additional advantage is that this gives the browser the opportunity to cache the JS file so that average response size is smaller.
See also:
- The entity name must immediately follow the '&' in the entity reference
- Is it possible to use JSF+Facelets with HTML 4/5?
- How to reference CSS / JS / image resource in Facelets template?
- Writing JavaScript for XHTML
I ran across this post today as I was running into the same issue and had the same problem of the javascript not running with the CDATA tags listed above. I corrected the CDATA tags to look like:
¡Entonces todo funcionó a la perfección!
A veces necesitarás esto:
/*
y no solo esto:
Te mostramos las reseñas y valoraciones de los lectores
Si te sientes motivado, eres capaz de dejar un tutorial acerca de qué te ha gustado de este post.