Utilizaremos un componente commandButton y su atributo Disabled.
En muchos componentes encontraremos un atributo que se llama " Disabled", y que nos permitirá habilitar o no dicho componente poniendo un "true" o un "false.
A veces, como en la vida, no todo es tan fácil, ni podemos poner "true" o "false" directamente, sino que puede depender de valores de una variable, o de otras operaciones. En este ejemplo veremos un caso de este tipo.
Para ello tomamos podemos seguir el ejemplo que teníamos anteriormente, en el que se mostraba un listado de trabajadores.
listado de trabajadores |
Si vemos la ultima columna del listado superior (Salario), nos encontramos que tiene un texto que dice "Alto" o "Bajo" dependiendo de si éste es mayor o inferior a 5000.
Vamos a hacer algo similar. Vamos a añadir una columna con un botón ( CommandButton). Éste se encontrará habilitado si es mayor de 5000 e inferior.
Nos vamos a la pestaña Structure, y seleccionamos la última columna de la tabla.
Con el menú contextual seleccionamos " insert after af:column....", y seleccionamos " column", del conjunto de componentes que nos ofrece.
insertar nueva columna ( afcolumn) |
Al hacerlo se nos muestra el siguiente cuadro:
insert column seleccion componente |
En el campo UIComponent, aparece por defecto af:outputText (texto), pero seleccionaremos el botón ( af:commandButton).
Nota: Aunque hayamos hecho esto de esta manera, siempre podemos poner un componente dentro de la tabla arrastrando el componente desde Components Palette a la columna que queramos.
Este es el resultado de la inserción:
vista con la nueva columna |
Observemos que nos ha puesto la columna y el CommandButton, sin ninguna referencia a otro tipo de dato.
Seleccionemos el commandButton, desde la pestaña de Structure, y vayamos a Property Inspector para poder cambiar el atributo "Disabled".
Observemos que por defecto sólo podemos poner "true" o "false".
Si queremos que se haga una evaluación con respecto un valor, tal como habíamos visto con la etiqueta "Alto" y "Bajo" del ejemplo anterior, hacemos lo siguiente:
Una vez seleccionado el CommandButton, hacemos doble click en el Property Inspector.
Seleccionamos el atributo que queremos modificar.
commandbutton propery inspector |
En la parte superior hay un iconito que recuerda a una base de datos:
icono Bind to Data |
Como vemos, al pasar por encima nos indica que queremos enlazar el valor del campo a un dato (Bind to data).
Si pinchamos en este icono, se nos muestra lo siguiente:
asistente expresión |
Aquí podemos poner la expresión que queramos. Podemos incluso tomar la que hemos utilizado para ejemplo de "Alto" y "Bajo", y ponerle "true" y "false".
expresion del lenguaje |
Ejecutamos la página para ver los resultados:
ejecutamos la aplicación |
vista de resultados con los commandButton |
Como podemos observar, las filas que tienen el valor "Alto" tienen el botón habilitado.
Podemos hacer esto con otro tipo de comparaciones. Por ejemplo habilitar el botón para todos aquellos cuyo nombre sea mayor que la letra "C".
cambio de la EL (Expression Language) |
resultados con la nueva EL Expression Language |
Como podemos observar, las expresiones del lenguaje nos dan cierta flexibilidad a la hora de hacer operaciones en componentes concretos, y que nos libera de tener que escribir una función en un bean que haga esta función.
En ocasiones, no nos podremos librar de esto, por ejemplo, cuando las operaciones son complejas, o cuando los datos vienen de sitios muy distintos, entonces en ese caso el resultado del método del bean se utiliza dentro de la Expresión del Lenguaje.
Esto ya lo veremos más adelante cuando ya veamos los beans.
Puedes descargar el ejemplo en el siguiente enlace: Descargar Ejemplo
Puedes estar al tanto de las novedades en twitter @ADFSalvaje. o siguiendo este blog.
Gracias.
No hay comentarios:
Publicar un comentario