lunes, 7 de abril de 2014

Deshabilitar un componente (disable)

Resumen: En este artículo veremos cómo se deshabilitar un componente en ADF (disable component), a partir del atributo " Disabled", y con el uso de Expresiones del Lenguaje (Expression Language), que vimos en los artículos anteriores ( e ).
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.

vista resultado listado
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 columna afcolumn
insertar nueva columna ( afcolumn)


Al hacerlo se nos muestra el siguiente cuadro:

asistente insert column
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 nueva afcolumn
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.

property inspector commandbutton
commandbutton propery inspector



En la parte superior hay un iconito que recuerda a una base de datos:

bind to data icon
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 expression language
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".

asistente expression language
expresion del lenguaje


Ejecutamos la página para ver los resultados:

run application
ejecutamos la aplicación

vista resultados commandButton
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 EL Expression Language
cambio de la EL (Expression Language)




resultados con nueva 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:


Puedes estar al tanto de las novedades en twitter . o siguiendo este blog.
Gracias.

No hay comentarios:

Publicar un comentario