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 marcado mediante el uso de variables globales, cálculos y propiedades disponibles gracias al controlador de la página. Juntos 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 }
Todo lo que se encuentre dentro de 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 a valores del sistema y recursos en su marcado de Visualforce y mostrarlos.
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 }
.
- Abra Developer Console y haga clic en File (Archivo) | New (Nuevo) | Visualforce Page (Página de Visualforce) para crear una nueva página de Visualforce. Escriba
UserStatus
para el nombre de página.
- En el editor, sustituya cualquier marcado con lo siguiente.Este marcado crea un cuadro, listo para que agregue información útil.
<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> </apex:pageBlockSection> </apex:pageBlock> </apex:page>
- Haga clic en Preview (Vista previa) para abrir una vista previa de su página, que podrá ver mientras realiza cambios.
- Agregue el siguiente marcado entre las etiquetas
<apex:pageBlockSection>
:{!$User.FirstName }.
Debería ver su nombre en el panel User Status (Estado de usuario) que ha creado.
- Agregue dos expresiones adicionales que utilicen la variable global
$User
en el marcado para el panel User Status (Estado de usuario), de manera 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>
{!...}
indica 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 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.
- En su página UserStatus, sustituya las expresiones separadas para el nombre y apellidos con la siguiente expresión de fórmula. 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.
{!$User.FirstName & ' ' & $User.LastName}
- Agregue lo siguiente a la marca de página debajo de la información de usuario.
<p> Next week it will be {! TODAY() + 7 } </p> <p> Today's Date is {! TODAY() } </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.
Next week it will be Thu Sep 25 00:00:00 GMT 2014. Today's Date is Thu Sep 18 00:00:00 GMT 2014
- Agregue lo siguiente al marcado de página debajo de las expresiones de fecha.
<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>
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 (verdadero) o false (falso). 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 manera 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 ha caducado, 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 (verdadero) o false (falso). 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.
- En su página
UserStatus
, 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.
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.
- 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. Sustituya la línea con la expresión
$User.Username
por 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 está activo y falso si se desactivó. Ahora el panel 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 organización ($Organization
), configuración ($Setup
), detalles acerca de objetos personalizados ($ObjectType
), acciones disponibles en esos objetos ($Action
) y mucho más. Consulte las variables globales en la Guía del desarrollador de Visualforce para profundizar más en el tema.
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 sabe acerca de los campos de fórmula cuando redacta expresiones de Visualforce. Consulte Funciones en la Guía del desarrollador de Visualforce para obtener una lista completa.
Las expresiones tienen varios usos y suelen utilizarse para proporcionar valores para atributos en componentes de Visualforce.
Recursos
-
Ayuda de Salesforce: Variables globales
-
Ayuda de Salesforce: Elementos de una fórmula
-
Guía del desarrollador de Visualforce: Variables globales
-
Guía del desarrollador de Visualforce: Funciones
-
Guía del desarrollador de Visualforce: Operadores de expresión
-
Trailhead: Fórmulas y validaciones