tag language custom jsp escaping double-quotes

language - error simple debido al uso de comillas dobles en un archivo jsp



jsp tag libraries (7)

Tengo la siguiente línea de código en un archivo JSP en mi aplicación web que está dando un error:

<jsp:setProperty name="db" property="userName" value="<%=request.getParameter("userName")%>"/>

El mensaje de error que recibo es:

org.apache.jasper.JasperException: /loginbean.jsp(6,59) El valor de atributo request.getParameter ("userName") se cita con "que se debe escapar cuando se usa dentro del valor

Lo que leí en algunos sitios es que los caracteres como '' (comillas simples) o " (comillas dobles) necesitan un prefijo con una secuencia de escape / (barra invertida) si se van a usar.

Sin embargo, cuando intento y prefijo las comillas dobles (alrededor de la palabra userName) con barra invertida, inmediatamente obtengo el siguiente error: "Illegal Character / 92- Unclosed String Literal"

¿Cómo resuelvo este problema?





Esto se puede solucionar con un IDE Regexp Replace:

(</w+:(?:[^>]|<%=[^%]+%>)+=)"([^<"]*<%=[^%]*"[^%]*%>[^"]*)"

Para el texto de reemplazo, ingrese:

$ 1 ''$ 2''


Si no quiere modificar sus JSP, simplemente configure:

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

en su {TOMCAT_ROOT}/conf/catalina.properties . ¡Funciona de maravilla!

Felicitaciones desde aquí .


Si usa Tomcat 8.5+, la propiedad org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false no se reconocerá.

Pude configurar la propiedad correctamente en {TOMCAT_ROOT}/conf/web.xml agregando lo siguiente dentro del bloque <servlet> :

<init-param> <param-name>strictQuoteEscaping</param-name> <param-value>false</param-value> </init-param>


si utiliza un "como delímetro de scriplet", no puede usar el delimitador de propiedad en getParameter. Por lo tanto, cambie el delímetro de scriptlet por ". Como parámetro de etiqueta, creo que no habrá ningún problema. De lo contrario, reemplace:

value = "<% = request.getParameter (" userName ")%>" />

por:

value = ''<% = request.getParameter ("userName")%>'' />