Idioma da expressão do JavaServer Faces

Consulte também

Este tópico aborda a linguagem de expressão do JavaServer Faces 1.1. Use esta linguagem de expressão com projetos J2EE 1.4 e J2EE 1.3, que usem componentes JavaServer Faces 1.1. Se você estiver trabalhando com um projeto Java EE 5, seus componentes são JavaServer Faces 1.2, que usam a linguagem de expressão unificada. Consulte a página da Web seguinte para ver um artigo sobre essa linguagem:

Para a especificação completa da linguagem de expressão unificada, você deve baixar a especificação JavaServer Pages (JSP) 2.1. A página da Web seguinte discute sobre a tecnologia JSP e fornece links para downloads:

Este tópico é para usuários avançados que desejam indicar suas próprias expressões de vinculação de valor em vez de deixar o IDE criar tais expressões. Ela possui as seguintes seções:

Introdução
Sintaxe de expressão EL do JavaServer Faces
Semântica obter valor
Semântica definir valor
Objetos implícitos
Literais
Operadores
Palavras reservadas

Introdução

O JavaServer Faces fornece uma linguagem de expressão (JSF EL) que é usado em páginas da aplicação Web para acessar os componentes JavaBeans no bean de página e em outros beans associados à aplicação Web, tal como o bean de sessão e o bean de aplicação. O IDE na maioria dos casos cuida da especificação da expressão correta para você, por exemplo, quando você vincula a propriedade text do componente a um provedor de dados ou a uma propriedade JavaBean.

Para vincular uma propriedade de um componente, você pode adicionar o componente a uma página JSF Visual Web e, em seguida, clicar com o botão direito do mouse no componente e escolher Vinculações de propriedade. Você pode usar a caixa de diálogo Vinculações de propriedade para selecionar uma propriedade do componente e escolher a qual propriedade JavaBeans o componente será vinculado.

Como um exemplo de vincular um componente a uma tabela de banco de dados, a amostra de código seguinte faz referência a um componente Texto estático. Eis aqui como produzir a amostra de código:

  1. Arraste o componente Texto estático ícone do texto de saída da categoria Básico da Paleta para uma página JSF Visual Web no Visual Designer.
  2. Abra a e arraste a tabela Pessoa do banco de dados Viagem e solte-a no componente.

    O IDE adiciona automaticamente um objeto do provedor de dados à página e vincula a propriedade text ao campo PERSON.PERSONID do provedor de dados. Veja o texto da alteração do componente para 123.

  3. Clique com o botão direito do mouse no componente e escolha Vincular aos dados.
  4. Na caixa de diálogo Vincular aos dados, escolha o campo PERSON.NAME do provedor de dados e clique em OK para alterar a vinculação da propriedade text para o campo correto.
  5. Clique no botão JSP acima da página para ver o código-fonte resultante.

O código resultante no editor JSP é semelhante ao seguinte:

  <ui:staticText binding="#{Page1.staticText1}" 
   id="staticText1" 
   style="position: absolute; left: 216px; top: 192px" 
   text="#{Page1.personDataProvider.value['PERSON.NAME']}"/>

Como descrito nas seções seguintes, a sintaxe da linguagem de expressão do JavaServer usa os delimitadores #{}. Uma expressão do JavaServer Faces pode ser uma expressão de vinculação de valor (para vincular componentes IU ou seus valores a fontes de dados externas) ou uma expressão de vinculação de método (para fazer referência a métodos de bean). Ele também pode aceitar literais mistos, os operadores e a sintaxe de avaliação da linguagem de expressão 2.0.

Sintaxe de expressão EL do JavaServer Faces

JSF EL pode ser usada para vincular JavaBeans às propriedades de componente para simplificar a forma em que os componentes acessar os dados de vários códigos-fonte. As expressões JSF EL usam a sintaxe #{expr};

A sintaxe de uma expressão de vinculação de valor é idêntica à sintaxe de uma expressão de linguagem de expressão definida na especificação JavaServer Pages (versão 2.0), seções 2.3 a 2.9, com as seguintes exceções:

Além das diferenças dos delimitadores, os dois tipos de expressão possuem semântica diferente:

Os exemplos de expressões de vinculação de valor válidas incluem:

   #{Page1.name}
   #{Foo.bar}
   #{Foo[bar]}
   #{Foo[“bar”]}
   #{Foo[3]}
   #{Foo[3].bar}
   #{Foo.bar[3]}
   #{Customer.status == ‘VIP’}
   #{(Page1.City.farenheitTemp - 32) * 5 / 9}
   Reporting Period: #{Report.fromDate} to #{Report.toDate}

Para expressões de vinculação de valor onde o método setValue será chamado (por exemplo, para vinculações da propriedade text para campos de entrada durante Atualizar valores de modelo), a sintaxe de uma expressão de vinculação de valor é limitada a um dos seguintes formatos, onde expr-a é uma expressão geral avaliada como algum objeto, e value-b é um identificador:

   #{expr-a.value-b}
   #{expr-a[value-b]]
   #{value-b}

Semântica obter valor

Quando o método getValue de uma instância ValueBinding é chamado (por exemplo, quando uma expressão em um atributo de marca JSP está sendo avaliada durante a renderização da página), e a expressão é avaliada, e o resultado dessa avaliação é retornado, a avaliação é feita da seguinte forma:

Semântica definir valor

Quando o método setValue de um ValueBinding é chamado (por exemplo, para as vinculações da propriedade text para campos de entrada durante Atualizar valores de modelo), a sintaxe da restrição de vinculação de valor é restrita como descrito na seção anterior. A implementação deve realizar o seguinte processamento para avaliar uma expressão do formato #{expra.value-b} ou #{expr-a[value-b]}:

Se a expressão inteira consiste em um único identificador, as regras seguintes se aplicam:

Objetos implícitos

A linguagem de expressão define um conjunto de objetos implícitos:

Objetos que permitem acesso a diversas variáveis de escopo:

Quando uma expressão faz referência a um desses objetos por nome, o objeto apropriado é retornado. Um objeto implícito tem precedência sobre um atributo que possui o mesmo nome. Por exemplo, #{facesContext} retorna o objeto FacesContext, mesmo que há um atributo facesContext existente contendo algum outro valor.

Literais

A linguagem de expressão define as literais seguintes:

Operadores

Além dos operadores . e [] abordados acima em Semântica obter valor e a seção depois dessa, a linguagem de expressão fornece os seguintes operadores:

A precedência dos operadores do mais alto para o mais baixo, da esquerda para a direita, da seguinte forma:

Palavras reservadas

As palavras seguintes são reservadas para a linguagem de expressão e não devem ser usadas como identificadores:

e false le not
div ge lt nulo
vazio gt mod ou
eq instanceof ne true
Consulte também
Adicionando componentes a uma página JSF Visual Web
Sobre os componentes de vinculação a dados
Vinculando propriedades do componente
Sobre páginas

Notificações legais