Qual é a diferença entre "$ {foo.bar}" e "#{foo.bar}"?
Pergunta
Eu posso usar objetos dos meus grãos java dentro de arquivos .jsp usando o idioma da expressão (EL). Portanto, posso obter meu valor digitando $ {foo.bar}. Mas também posso usar #{foo.bar}.
Alguém pode explicar a diferença ou fornecer um link com informações significativas?
Solução
#{foo.bar}
A sintaxe é da linguagem de expressão JSF. Alguma faísca brilhante achou que seria uma boa ideia usar uma sintaxe diferente para JSP el (ou seja, ${foo.bar}
). Eu acho que alguns contêineres JSP são tolerantes com esse cock -up e permitem que você use qualquer um.
Outras dicas
Isso é coberto no JSP 2.1 Spec.
Em Java Ee, #{expr}
é usado para Avaliação diferida e ${expr}
por avaliação imediata. Expressões diferidas (#{expr}
) Expressões só podem ser usadas com atributos de tag que os aceitam. Esta é uma convenção Java EE, mas outros domínios podem impor seu próprio significado (por exemplo, se você quisesse Use El em seus próprios modelos).