[RESOLVIDO] - Qual é a diferença de $ para # no JSF

4 respostas
Gianetti

A diferença de $ para # no JSF não levando em consideração se é 2.0 ou não, mas quero saber porque usarão o #, vi alguma coisa sobre uso em tempo de execução e compilação, a dúvida é esta?

4 Respostas

drsmachado

Bom, primeiramente, precisamos entender a função do $ e do #.
Para o #, ele é um elemento chave que diz, quando há a compilação do código da jsp ou xhtml, que o conteúdo delimitado pelas chaves (#{conteudo}) deve ser interpretado, utilizando algo que existe ou não em um escopo (contexto, aplicação, sessão, requisição, página), seja uma variável (que pode ser objeto, coleção de objetos, etc) ou um método.
Já o $ é utilizado de N formas.
No JQuery e prototype são coringas para referenciar functions. No JSTL, é utilizado com a mesma função do # no JSF.
O struts, por exemplo, utiliza % no lugar de $ e # em algumas situações.

Em termos de funcionalidade, o # está um passo a frente do $. Isto, por que, enquanto o $ só mapeia unilateralmente (não é possível referenciar uma variável/método da servlet/bean utilizando o $), o # o faz de maneira bilateral (com o # se mapeia os métodos e variáveis do managedbean).
A entender:

//usando $
Texto<input type="text" name="txt" value="${txt}"/>

//usando #
<h:outputLabel value="Texto"/>
<h:inputText value="#{bean.txt}"/>

Perceba que, ao submetermos ambos, teremos o envio do conteúdo digitado na textfield, porém, se não informassemos o atributo name do textfield html, a servlet desconheceria sua existência, no request, enquanto que, no JSF, isso não é preciso.

Flavio_machine

boa explicação

Gianetti

Muito boa a explicação, vlw mesmo…

pedrogf89

Otima explicação mesmo.

Criado 31 de janeiro de 2012
Ultima resposta 31 de jan. de 2012
Respostas 4
Participantes 4