Usamos jspx como motor de plantilla. Tenemos docenas de pantallas con cientos de expresiones el como $ {user.firstName} o "$ {mail.subject}"Escape de entidades HTML en JSP/JSPX: ¿no hay solución para el problema que ni siquiera debería existir?
Y todo este código HTML no se escapa de manera predeterminada. . Si hubiera algo con < o "en el campo - pantalla fallará Siempre podemos usar fn: escapeXml pero si lo hace en todos los lugares muy aburrido
1) Hace hay una manera de hacerlo de escape de manera predeterminada. ?
La única forma que conozco es modificar JSP compilador (como Jasper para Tomcat). Pero no es un camino a seguir.
2) por qué alguien puede necesitar HTML sin escape en el? Almacenamiento de código HTML fuera de la plantilla (en la base de datos, por ejemplo) no es una buena práctica.
3) Estoy seguro de que el motor de plantillas debería manejarlo automáticamente (como lo hizo en XSLT), ¿por qué debería importarle al usuario? El escape manual (fn: escapeXml) huele a SQL manual escaping (que se utiliza en lugar de JDBC setParam): código repetitivo y buen lugar para inyección sql (scripts de sitios cruzados en nuestro caso).
Gracias! Usamos struts + jspx, no queremos usar caras, es una tecnología diferente. 1) Utilizamos intellij idea y podemos reemplazar todos los elementos pero no nos gusta de esta manera. 2) escaparse es un problema VER y debe ser resuelto en la capa de vista, no en la base de datos. 3) Para hacerlo, necesito hackear mi contenedor. Puedo registrar mi ELResolver personalizado, pero se usará en cadena, no puedo deshabilitar ni ajustar todos los demás resolvedores (ni siquiera tengo punteros para ellos: JSP EL API es muy mala). 4) Usamos puntales. Utiliza ServletDispatcher para resolver vistas de jsp. Podemos jugar con él, pero no estoy seguro de que funcione. –
Luego muerde la bala. Por eso te pagan. Aprende la lección para la próxima vez. – BalusC
Creo que hay una quinta opción que podría agregar, que no es usar JSP, sino una tecnología de visualización diferente como Scalate, Velocity o Freemaker. Para esos lenguajes de plantillas es más fácil hacer cosas transversales. –