Empiece a realizar un seguimiento de su progreso
Inicio de Trailhead
Inicio de Trailhead

Utilizar variables y fórmulas sencillas

Objetivos de aprendizaje

Después de completar esta unidad, podrá:
  • Explicar qué es una expresión de Visualforce y describir dónde se utiliza.
  • Indicar tres o más variables globales disponibles para el uso en expresiones de Visualforce.
  • Agregar una expresión de Visualforce a una página de Visualforce.
  • Utilizar una función en una expresión de Visualforce.

Introducción a variables globales y expresiones de Visualforce

Las páginas de Visualforce pueden mostrar datos recuperados de la base de datos o servicios Web, datos que cambian dependiendo de quién inició sesión y está visualizando la página, etc. Estos datos dinámicos son accesibles en marcas mediante el uso de variables globales, cálculos y propiedades disponibles gracias al controlador de la página. Ambos se describen generalmente como expresiones de Visualforce. Utilice expresiones para salidas dinámicas o pasando valores en componentes asignándolos a atributos.

Una expresión de Visualforce es cualquier conjunto de valores literales, variables, subexpresiones u operadores que se pueden resolver en un solo valor. Las llamadas de métodos no se permiten en expresiones.

La sintaxis de expresión en Visualforce es: {! expression }

Cualquier elemento entre los delimitadores {! } se evalúa y sustituye de forma dinámica cuando se representa la página o cuando se utiliza el valor. Los espacios en blanco se ignoran.

El valor resultante puede ser un valor primitivo (entero, cadena, etc), un valor booleano, un sObject, un método de controlador como un método de acción y otros resultados útiles

Variables globales

Utilice variables globales para acceder y mostrar valores del sistema y recursos en su marca de Visualforce.

Por ejemplo, Visualforce proporciona información acerca del usuario que inició sesión en una variable global denominada $User. Puede acceder a campos de la variable global $User (y cualquier otra) utilizando una expresión del siguiente formulario: {! $GlobalName.fieldName }.

  1. Abra Developer Console y haga clic en FileNew Visualforce Page (Archivo | Nuevo | Página de Visualforce) para crear una nueva página de Visualforce. Ingrese "User Status" para el nombre de página.
  2. En el editor, sustituya cualquier marca con lo siguiente.
    <apex:page>
        <apex:pageBlock title="User Status">
            <apex:pageBlockSection columns="1">
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:page>
    Esta marca crea un cuadro, listo para que agregue alguna información útil.
  3. Haga clic en Vista previa para abrir una vista previa de su página que podrá ver mientras realiza los cambios.
  4. Agregue la siguiente marca entre las etiquetas <apex:pageBlockSection>.
    {! $User.FirstName }
    Debe ver su nombre en el tablero Estado de usuario que creó.
  5. Agregue dos expresiones adicionales que utilizan la variable global $User en la marca para el tablero Estado de usuario de modo que la página tenga el siguiente aspecto.
    <apex:page>
        <apex:pageBlock title="User Status">
            <apex:pageBlockSection columns="1">
                {! $User.FirstName } {! $User.LastName }
               ({! $User.Username })
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:page>

{! ... } indican a Visualforce que todo lo incluido entre corchetes es dinámico y está redactado en el lenguaje de expresión. Su valor se calcula y se sustituye en el momento de la ejecución, cuando alguien visualiza la página.

Las expresiones de Visualforce distinguen entre mayúsculas y minúsculas y se ignoran los espacios en {! ... }. Por lo que todas estas expresiones producen el mismo valor:
  • {! $User.FirstName}
  • {!$USER.FIRSTNAME}
  • {! $user.firstname }

Expresiones de fórmula

Visualforce le permite utilizar más que las variables globales en el lenguaje de expresión. También admite fórmulas que le permiten manipular valores.

Por ejemplo, el carácter & es el operador del lenguaje de fórmula que concatena cadenas.

  1. En su página UserStatus, sustituya las expresiones separadas para el nombre y apellidos con la siguiente expresión de fórmula.
    {! $User.FirstName & ' ' & $User.LastName }
    Esta expresión combina el nombre y los apellidos del usuario que inició sesión separándolos con un espacio. El resultado debe ser idéntico.
  2. Agregue lo siguiente a la marca de página debajo de la información de usuario.
    <p> Today's Date is {! TODAY() } </p>
    <p> Next week it will be {! TODAY() + 7 } </p>
    Estas son fórmulas más complejas que utilizan la función TODAY(). Las funciones son cálculos integrados que puede identificar por el paréntesis tras su nombre. La primera expresión simplemente calcula la fecha actual y la segunda utiliza el operador de suma para agregar siete días a la fecha. El resultado en su página tendrá un aspecto parecido a este.
    Today's Date is Thu Sep 18 00:00:00 GMT 2014
    Next week it will be Thu Sep 25 00:00:00 GMT 2014
  3. Agregue lo siguiente a la marca de página debajo de las expresiones de fecha.
    <p>The year today is {! YEAR(TODAY()) }</p>
    <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>
    Algunas funciones, como TODAY(), tienen paréntesis vacíos, pero algunos utilizan parámetros, que son valores que desea que la función utilice para hacer sus cálculos. En este ejemplo, YEAR() utiliza un parámetro de fecha proporcionado por la función TODAY() que a su vez no utiliza parámetros. La función MAX() puede utilizar cualquier número de parámetros. La función CONTAINS() es especialmente interesante. Devuelve un valor Booleano: algo que es true o false. Compara dos argumentos de texto y devuelve true si el primer argumento contiene el segundo argumento. Si no es así, devuelve false. En este caso, la cadena “force.com” está incluida en la cadena “salesforce.com, de modo que devuelve true.

Expresiones condicionales

Utilice una expresión condicional para mostrar diferentes informaciones basándose en el valor de la expresión.

Por ejemplo, si una factura no tiene partidas, es posible que desee mostrar la palabra “ninguna” en vez de una lista vacía. O bien, si un elemento caducó, es posible que desee mostrar “Finalizado” en lugar de mostrar la fecha y hora de finalización.

Puede hacer esto en Visualforce utilizando una expresión de fórmula condicional, como IF(). La expresión IF() utiliza tres argumentos:
  • El primero es un Booleano: algo que es true o false. Por ejemplo, la función CONTAINS() que utilizó antes.
  • El segundo argumento es el valor que se devolverá si el primer parámetro es true.
  • El tercer argumento es el valor que se devolverá si el primer parámetro es false.
  1. En su página Estado de usuario, debajo de las otras expresiones, agregue el siguiente código.
    <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 guardar sus cambios y ver los resultados, pruebe a pronosticar qué serán. Los resultados en su página tendrán un aspecto parecido a este. Entorno de prueba de expresiones de Visualforce La primera expresión utiliza el mismo cálculo de función CONTAINS() que antes. La diferencia es que la función IF() convierte el resultado booleano de CONTAINS() en texto más útil para mostrar al usuario. Del mismo modo, la segunda expresión muestra un mensaje durante la primera mitad del mes y un mensaje diferente la segunda mitad del mes.
  2. Elimine todas sus expresiones de prueba, dejando solo las líneas que utilizan la variable global $User. En otras palabras, vuelva a 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>
    Utilicemos una expresión condicional para hacer algo un poco más útil.
  3. Sustituya la línea con la expresión $User.Username con el siguiente código.
    ({! IF($User.isActive, $User.Username, 'inactive') })
    isActive es otro campo disponible en la variable global $User. Es un campo Booleano que es verdadero si el usuario es activo y falso si se desactivó. Ahora el tablero Estado de usuario mostrará el nombre del usuario si está activo e “inactivo” si no lo está.

Más información...

Existen varias funciones y variables globales que puede utilizar en expresiones de Visualforce.

Hay casi dos docenas de variables globales que se pueden utilizar en Visualforce. Son útiles para obtener información acerca del usuario que acaba de iniciar sesión, como puede ver, pero también para obtener detalles acerca de la configuración de la organización ($Organization), configuración ($Setup), detalles acerca de objetos personalizados ($ObjectType), acciones disponibles en esos objetos ($Action) y mucho más. Consulte la referencia de variables globales de Visualforce para profundizar.

Del mismo modo, existen numerosas funciones que se pueden utilizar en Visualforce. La lista es similar, pero exactamente igual, a las funciones disponibles en campos de fórmula. Si se superponen las funciones que se comportan del mismo modo, puede reutilizar la mayor parte de lo que conoce acerca de los campos de fórmula cuando redacta expresiones de Visualforce. Consulte la referencia de funciones de Visualforce para obtener una lista completa.

Las expresiones tienen varios usos y son habitualmente utilizadas para proporcionar valores para atributos en componentes de Visualforce.