'#' Personagem antes expressão EL utilizado dentro de uma tag JSTL comportamento estranho

StackOverflow https://stackoverflow.com/questions/1044430

  •  20-08-2019
  •  | 
  •  

Pergunta

Eu tenho o seguinte código para definir uma variável userId:

(conjunto userId no código anterior)

<c:set var="userId" value="(Cust#${userId})" />

Que produz a seguinte cadeia: (Cust # $ {userId})

O código a seguir funciona como esperado, no entanto:

<c:set var="userId" value="(Cust# ${userId})" />

exibe o seguinte string (Cust # 0001).

Por que o caractere '#' antes de um '{string} $' expressão evitar que a corda de ser avaliado? Existe um trabalho em torno eu poderia usar isso não envolver ter que inserir um espaço?

Foi útil?

Solução

Desde JSF usaria:

#{userId}

Para retornar um usuário Id, Atrevo-me a adivinhar que este seja um bug ou comportamento esperado causado pelo sinal # tornando o analisador infeliz. Basta usar qualquer um:

<c:set var="userId" value="(Cust&#35;${userId})" />
<c:set var="userId" >(Cust&#35;${userId})</c:set>

Outras dicas

Eu testei o exposto, e ele não funciona. Sua ouput seria:

Cust # 0002 ou o que quer.

Você pode usar uma fuga para obtê-lo para o trabalho certo, entretanto. Por exemplo:

<c:set var="userId" value="(Cust\#${userId})" />

A saída é:

Cust # 0002

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top