Esta regra sinaliza a utilização da sequência '#{' em arquivos JSP.
Em JSP 2.1, a sintaxe #{} agora é uma
palavra-chave reservada.
Quando arquivos JSP mas antigos que contém a sequência #{} são usados no
JSP 2.1, eles irão gerar um erro.
Para se detectar a sequência #{, devem ser atendidas as condições a seguir:
- A versão do servlet (a partir do web.xml) deve ser 2.4 ou superior.
- A página não deve possuir uma diretiva de isELIgnored="true" configurada.
- A página não deve mapear para um <url-pattern> em um <jsp-property-group> (a partir de <jsp-config> em web.xml) com <el-ignored> configurado como true.
- A entrada #{ deve estar em um texto de modo jsp.
- A entrada deve estar em uma tag que não seja uma tag Java Server Faces (JSF).
A regra detecta as tags JSF comparando o prefixo da tag com a lista de prefixos fornecidas na
propriedade de regra chamada "Efetuar bypass das tags usando esses prefixos".
Os valores padrão dos prefixos JSF ignorados são:
h,f,ui,facelet,composite,comp,ez.
Observe os itens a seguir:
- O usuário deve incluir qualquer outro prefixo JSF definido por seu aplicativo para que essas tags sejam ignoradas.
- O usuário deve remover qualquer entrada do parâmetro do prefixo se o prefixo for usado nas páginas JSP, mas não para uma tag JSF.
- Se um prefixo for usado como um prefixo JSF em alguns casos, e como uma tag JSP normal em outros, o usuário não deve incluir o prefixo na lista de parâmetros e deve examinar manualmente cada resultado gerado.
Uma correção automática adicionará o caractere de escape antes da sintaxe #{.
Exemplo:
|
<h1>This is an example of template text that will be detected: #{detected}</h1>
|
A correção automatizada alterará esse código para:
|
<h1>This is an example of template text that will be detected: \#{detected}</h1>
|
Também há formas diferentes de desativar o Expression Language (EL):
- Página por página para todas as expressões EL: o Desenvolvedor pode especificar o atributo isELIgnored da diretiva da página JSP e configurar seu valor como true
Por exemplo:
|
<%@ page isELIgnored ="true" %>
|
Isso desativará todas as expressões EL para essa página (ou seja, todas
${exp} and #{exp}
)
- Por meio da configuração do grupo de propriedades JSP no web.xml: O desenvolvedor pode desativar o EL
para uma única página ou várias páginas com base no padrão URL específico configurando o elemento el-ignored
como true
Por exemplo:
< span class="Code"> < jsp-property-group>
< url-pattern> *.jsp < /url-pattern>
< el-ignored> true < /el-ignored>
</jsp-property-group>
|
- Por meio da configuração do grupo de propriedades JSP no web.xml para desativar apenas a sintaxe adiada EL (#{})
Por exemplo:
< span class="Code"> < jsp-property-group>
< url-pattern> *.jsp < /url-pattern>
< deferred-syntax-allowed-as-literal> true < /deferred-syntax-allowed-as-literal>
</jsp-property-group> |
- Página por página para apenas a sintaxe adiada EL configurando o atributo deferred-syntax-allowed-as-literal da diretiva da página JSP como true
Por exemplo:
|
<%@ page deferredSyntaxAllowedAsLiteral="true" %>
|
Observação sobre a precedência:
Os atributos isELIgnored e deferredSyntaxAllowedAsLiteral da diretiva da página têm precedência sobre os respectivos elementos e valores em web.xml.
Esses atributos de diretiva de página substituem os valores dos respectivos elementos em web.xml.
Para obter informações adicionais, veja: