Esta regla marca la utilización de la secuencia '#{' en archivos JSP.
En JSP 2.1, la sintaxis #{} es ahora una palabra clave reservada.
Cuando archivos JSP anteriores que contienen la secuencia #{} se utilizan en JSP 2.1, generan un error.
Para poder detectar la secuencia #{, deben cumplirse las condiciones siguientes:
- La versión del servlet (de web.xml) debe ser 2.4 o posterior.
- La página no tiene definida una directiva isELIgnored="true".
- La página no se correlaciona con <url-pattern> de <jsp-property-group> (de <jsp-config> en web.xml) con <el-ignored> definido como true.
- La entrada #{ es un texto de plantilla jsp.
- La entrada está en una etiqueta que no es una etiqueta JSF (Java Server Faces).
La regla detecta las etiquetas JSF comparando el prefijo de etiqueta con la lista de prefijos proporcionados en la propiedad de regla denominada "Ignorar etiquetas utilizando estos prefijos".
Los valores predeterminados de los prefijos JSF omitido son:
h,f,ui,facelet,composite,comp,ez.
Compruebe los elementos siguientes:
- El usuario debe añadir otros prefijos JSF definidos por su aplicación para que se puedan ignorar esas etiquetas.
- El usuario debe eliminar las entradas del parámetro de prefijo si el prefijo se utiliza en las páginas JSP, pero no para una etiqueta JSF.
- Si un prefijo se utiliza como prefijo JSF en algunos casos y como etiqueta JSP normal en otros casos, el usuario no debe incluir el prefijo en la lista de parámetros, y debe examinar cada resultado generado manualmente.
Una corrección automática añadirá el carácter de escape antes de la sintaxis #{.
Ejemplo:
|
<h1>This is an example of template text that will be detected: #{detected}</h1>
|
La corrección automática cambiará este código por:
|
<h1>This is an example of template text that will be detected: \#{detected}</h1>
|
También hay distintos modos de desactivar el Expression Language (EL):
- Página a página para todas las expresiones EL: el desarrollador puede especificar el atributo isELIgnored de la directiva de página JSP y establecer su valor en true
Por ejemplo:
|
<%@ page isELIgnored ="true" %>
|
Esto desactivará todas las expresiones EL para esa página (es decir, todas
${exp} and #{exp}
)
- Mediante el valor de grupo de propiedades de JSP en web.xml: el desarrollador puede desactivar el EL para una única página o para varias páginas según el patrón de URL específico estableciendo el elemento el-ignored en true
Por ejemplo:
< span class="Code"> < jsp-property-group>
< patrón-url> *.jsp < /patrón-url>
< el-ignored> true < /el-ignored>
</jsp-property-group>
|
- Mediante el valor de grupo de propiedades de JSP en web.xml para desactivar únicamente la sintaxis diferida de EL (#{})
Por ejemplo:
< span class="Code"> < jsp-property-group>
< patrón-url> *.jsp < /patrón-url>
< sintaxis-diferida-permitida-como-literal> true < /sintaxis-diferida-permitida-como-literal>
</jsp-property-group> |
- Página a página para sólo para la sintaxis diferida de EL estableciendo el atributo deferred-syntax-allowed-as-literal de la directiva de página JSP en true
Por ejemplo:
|
<%@ page deferredSyntaxAllowedAsLiteral="true" %>
|
Nota sobre la prioridad:
Los atributos isELIgnored y deferredSyntaxAllowedAsLiteral de la directiva de página tienen prioridad sobre los respectivos elementos y valores en web.xml.
Estos atributos de directiva de página alteran temporalmente los valores de los respectivos elementos en web.xml.
Para obtener información adicional, consulte: