Usar fórmulas e variáveis simples
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Explicar o que é uma expressão do Visualforce e descrever os casos em que ela é usada.
- Listar três ou mais variáveis globais disponíveis para serem usadas em expressões do Visualforce.
- Adicionar uma expressão do Visualforce a uma página do Visualforce.
- Usar uma função em uma expressão do Visualforce.
Introdução às variáveis globais e expressões do Visualforce
As páginas do Visualforce podem exibir dados recuperados do banco de dados ou de serviços web, dados que mudam dependendo de quem está conectado e visualizando a página, e assim por diante. Esses dados dinâmicos são acessados na marcação por meio do uso de variáveis globais, cálculos e propriedades disponibilizados pelo controlador da página. Juntos, geralmente são descritos como expressões do Visualforce. Use expressões para resultados dinâmicos ou atribuição de valores para componentes ao atribuí-los a atributos.
Uma expressão do Visualforce é qualquer conjunto de valores literais, variáveis, subexpressões ou operadores que podem ser resolvidos a um único valor. As chamadas de método não são permitidas nas expressões.
A sintaxe de expressão no Visualforce é: {!expression }
Tudo dentro dos delimitadores {!}
é avaliado e dinamicamente substituído quando a página é processada ou quando o valor é usado. Espaços em branco são ignorados.
O valor resultante pode ser um número primitivo (número inteiro, string, e assim por diante), um booleano, um sObject, um método de controlador, tal como um método de ação, e outros resultados úteis.
Variáveis globais
Use as variáveis globais para acessar e exibir valores do sistema e recursos em sua marcação Visualforce.
Por exemplo, o Visualforce fornece informações sobre o usuário conectado em uma variável global chamada $User
. É possível acessar campos da variável global $User
(e quaisquer outras) usando uma expressão do seguinte formulário: {!$GlobalName.fieldName }
.
- Abra o Developer Console e clique em File (Arquivo) | New (Nova) | Visualforce Page (Página do Visualforce) para criar uma nova página do Visualforce. Insira
UserStatus
como nome da página.
- No editor, substitua qualquer marcação pelo seguinte.
<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> </apex:pageBlockSection> </apex:pageBlock> </apex:page>
Essa marcação cria uma caixa, pronta para adicionar informações úteis.
- Clique em Preview (Visualizar) para abrir uma visualização da página que você pode consultar enquanto faz alterações.
- Adicione a marcação a seguir entre as marcas
<apex:pageBlockSection>
.{!User.FirstName }
Você verá seu nome no painel User Status (Status do usuário) criado.
- Adicione mais duas expressões que usam a variável global $User à marcação para o painel Status do usuário para que a página se pareça com o seguinte.
<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> {!User.FirstName } {!User.LastName } ({! $User.Username }) </apex:pageBlockSection> </apex:pageBlock> </apex:page>
{!...}
diz ao Visualforce que aquilo dentro das chaves é dinâmico e escrito na linguagem da expressão. Seu valor é calculado e substituído durante a execução, quando alguém visualiza a página.
As expressões do Visualforce não diferenciam maiúsculas e minúsculas e os espaços dentro de {!...}
são ignorados. Portanto, todas essas expressões produzem sempre o mesmo valor:
-
{!User.FirstName}
-
{!$USER.FIRSTNAME}
-
{!user.firstname }
Expressões de fórmula
O Visualforce permite que você use mais do que variáveis globais na linguagem da expressão. Ele também dá suporte a fórmulas que permitem que você manipule valores.
Por exemplo, o caractere &
é o operador de linguagem da fórmula que concatena strings.
- Na página UserStatus, substitua as expressões separadas para o nome e sobrenome pela seguinte expressão de fórmula.
{!User.FirstName & ' ' &User.LastName }
Esta expressão combina o nome e o sobrenome do usuário logado, separando-os com um espaço. A saída deve ser idêntica.
- Adicione o que vem abaixo à marcação da página, embaixo das informações do usuário.
<p> Next week it will be {!TODAY() + 7 } </p><p> Today's Date is {!TODAY() } </p>
Essas são fórmulas mais complexas que usam a funçãoTODAY()
. As funções são cálculos integrados que você pode identificar pelo parêntese após o nome. A primeira expressão simplesmente calcula a data atual e a segunda usa o operador de adição para adicionar sete dias à data. O resultado na sua página terá esta aparência.Next week it will be Thu Sep 25 00:00:00 GMT 2014Today's Date is Thu Sep 18 00:00:00 GMT 2014
- Adicione o que vem a seguir à marcação da página, embaixo das expressões de data.
<p>Tomorrow will be day number {! DAY(TODAY() + 1) }</p> <p>Let's find a maximum: {! MAX(1,2,3,4,5,6,5,4,3,2,1) } </p> <p>The square root of 49 is {! SQRT(49) }</p> <p>Is it true? {! CONTAINS('salesforce.com', 'force.com') }</p><p>The year today is {! YEAR(TODAY()) }</p>
Algumas funções, comoTODAY()
, têm parênteses em branco, mas outras usam parâmetros, valores que a função deve usar para fazer os cálculos. Neste exemplo,YEAR()
usa um parâmetro de data, fornecido pela funçãoTODAY()
, que não usa parâmetros. A funçãoMAX()
pode usar vários parâmetros. A funçãoCONTAINS()
é particularmente interessante. Ela retorna um valor booleano, algo que é true ou false. Ela compara dois argumentos de texto e retorna true se o primeiro argumento contém o segundo argumento. Caso contrário, retorna false. Nesse caso, a sequência de caracteres“force.com”
está contida na sequência de caracteres“salesforce.com”
e, portanto, ela retornatrue
.
Expressões condicionais
Use uma expressão condicional para mostrar informações diferentes com base no valor da expressão.
Por exemplo, se uma fatura não tem itens de linha, você pode preferir mostrar a palavra “nenhum” em vez de uma lista em branco. Ou se um item expirou, você pode preferir exibir “Encerrado” em vez de mostrar a data e hora de fechamento.
Você pode fazer isso no Visualforce usando uma expressão de fórmula condicional, como IF()
. A expressão IF()
usa três argumentos:
- O primeiro é um booleano, algo que é true ou false. Por exemplo, a função
CONTAINS()
, que você usou antes.
- O segundo argumento é o valor que será retornado se o primeiro parâmetro for true.
- O terceiro argumento é o valor que será retornado se o primeiro parâmetro for false.
- Na sua página
UserStatus
, embaixo das outras expressões, adicione o código a seguir.<p>{! IF( CONTAINS('salesforce.com','force.com'), 'Yep', 'Nope') }</p> <p>{! IF( DAY(TODAY()) < 15, 'Before the 15th', 'The 15th or after') }</p>
Antes de salvar suas alterações e ver os resultados, tente prever o que será! O resultado na sua página terá esta aparência.
A primeira expressão usa o mesmo cálculo da função CONTAINS()
de antes. A diferença é que a função IF()
converte o resultado booleano de CONTAINS()
em um texto mais útil para exibir ao usuário. De maneira semelhante, a segunda expressão mostra uma mensagem durante a primeira metade do mês e outra na segunda metade.
- Exclua todas as suas expressões de teste e deixe somente as linhas que usam a variável global
$User
. Em outras palavras, volte para esta página.<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> {!User.FirstName & ' ' &User.LastName } ({! $User.Username }) </apex:pageBlockSection> </apex:pageBlock> </apex:page>
Vamos usar uma expressão condicional para fazer algo mais útil.
- Substitua a linha com a expressão
$User.Username
pelo código a seguir.({!IF($User.isActive,User.Username, 'inactive') })isActive
é outro campo disponível na variável global$User
. É um campo booleano que é verdadeiro se o usuário está ativo e falso se o usuário foi desativado. Agora, o painel de status de usuário mostra o nome do usuário quando ele está ativo e “inativo” quando não.
Quero saber mais...
Há muitas variáveis globais e funções que você pode usar nas expressões do Visualforce.
Há quase duas dezenas de variáveis globais que podem ser utilizadas no Visualforce. Elas são úteis para obter informações sobre o usuário conectado no momento, conforme você viu, mas também para obter detalhes sobre a organização ($Organization
), configurações ($Setup
), detalhes sobre objetos personalizados ($ObjectType
), ações disponíveis nesses objetos ($Action
) e assim por diante. Consulte a referência de variáveis globais do Visualforce para saber mais sobre o assunto.
Da mesma forma, há dezenas de funções que podem ser utilizadas no Visualforce. A lista é semelhante às funções disponíveis nos campos de fórmula (mas não exatamente igual). Quando elas se sobrepõem, as funções se comportam da mesma maneira, por isso, você pode reutilizar a maior parte do que já sabe sobre campos de fórmula quando escrever expressões do Visualforce. Consulte a referência de funções do Visualforce para obter uma lista completa.
As expressões podem ser usadas de diversas maneiras e muitas vezes são usadas para fornecer valores aos atributos nos componentes do Visualforce.
Recursos
-
Variáveis globais
-
Elements of a Formula
-
Global Variables Visualforce
-
Functions Visualforce
-
Expression Operators Visualforce
-
Fórmulas e validações