JSF diferença entre $ e #

2 respostas
H

Queria saber qual a diferença do uso desses simbolos # e $ no JSF.
Quando devo usar um ou outro?
exemplo: ${xxxx} e #{xxxxxx}

2 Respostas

Mauricio_Linhares

Em JSF se usa #, $ é pra JSP. A partir do JSF 1.2 ambos ficam iguais, mas o ideal é você usar sempre o # pra não se enrolar.

L

Uma discussão bem técnica: $ é imediato e # é “atrasado” (não sei uma tradução boa para “defer”). Mas como assim?

Uma fase do Faces se chama Apply Request Values (segunda fase), onde os valores avaliados pela Expression Language são jogados na árvore de componentes. Quando a expression language começa com $, o valor é avaliado na hora e o resultado é jogado na árvore; e quando começa com #, é feito um bind na expressão, mas sem avaliá-lo (tecnicamente, será jogado um objeto Binding que atuará como um proxy da expressão), a expressão só será avaliada quando for necessário produzir a resposta, na fase RENDER_RESPONSE.

E porque se prefere # a $?

Simples (simples?), a expressão imediata é avaliada antes da fase INVOKE_APPLICATION, onde os valores do model podem ser atualizados, resultando numa página com dados “antigos”.

Criado 8 de abril de 2008
Ultima resposta 8 de abr. de 2008
Respostas 2
Participantes 3