Weblog de Victor Ramirez

Jueves, junio 12, 2008

Atributo de “On demand binding”

Filed under: netbeans — vramirez @ 5:51 AM

Una característica introducida en Netbeans 6.1 y que no muchos conocen, desde un principio (y que les puede incomodar) es el “On demand binding attribute”. Lo que en español seria algo como “atributo de vinculación por demanda”. En Netbenas 6.0, y en versiones anteriores (incluido el Java Studio Creator), al momento de crear un componente visual en una aplicación web (botón, label, textfield, textarea, etc), automáticamente creaba el componente en la página jsp, y otro en la página java. Sin tener en cuenta si en verdad ibamos a utilizar o a manejar el componente dentro de la página java. Por ejemplo, componentes como statictext o labels, normalmente no cambian sus propiedades durante la ejecución de una página, mientras que de un componente de input como un textarea o un textfield si podemos necesitar saber algunas cosas, como su contenido.

Para explicarme mejor crearé un nuevo proyecto web. File->New Project -> Web->Web Application. Como nombre le colocaré ondemandbinding. En la sección de frameworks no olvidar escoger “Visual Web JavaServer Faces”. Ahora a la página creada por default, denominada Page1.jsp le agregaremos diferentes componentes. Algo sencillo:

  • 1 TextField
  • 1 Label
  • 1 StaticText
  • 1 Button

Que después de ordenar dejaremos algo asi:

Ahora intentemos capturar el texto del textfield en el evento del botón. Ya que no he cambiado el id del textfield, este sería textField1, su nombre por default. Haciendo doble click sobre el boton en la vista de diseño, nos crea el método que ejecuta el evento para dicho componente. La manera de obtener el texto de dicho textfield sería:

String var=textField1.getText().toString();


Sin embargo, el compilador nos arroja un error, la variable no existe:

On demand error

En efecto, si revisamos en el código, por ningún lado encontraremos una declaración en java donde se cree este objeto. Esto es gracias al “on demand binding”, con el cual solo crearemos los correspondientes objetos correspondientes a los componentes visuales que en verdad vamos a necesitar en nuestra aplicación. Para poder utilizar el textfield dentro del código java, debemos hacer lo siguiente:

Nos devolvemos a la vista de diseño, no sin antes comentarear o eliminar la linea con el error. Hacemos click derecho sobre el componente visual que deseamos ver en la pagina java, en este caso el textfield, y seleccionamos la opción “add binding attribute”.

click derecho

Ahora si podemos utilizar el textfield en la pagina de java. Puedes revisar que en la pagina java se ha creado la variable texfield1 de tipo TextField. Si analizamos a fondo, vemos que en este sencilo ejemplo, de 4 elementos que tenemos en la pagina, solo necesitamos utilizar en el código java, uno de ellos (estamos utilizando un 25% de los componentes visuales). Esto suele serla cotidianidad en las aplicaciones web; se usan muchos elementos en la página (mensajes, textos informativos, etc), que no se utilizarán o alterarran durante la ejecución de la aplicación.

Si decidimos revertir el proceso, y quitar el “binding” de un componente lo podemos hacer, de igual manera, haciendo click derecho sobre el componente y seleccionando la opción “Remove binding attribute”, lo cual removerá la declaración del componente. Esto será cierto, salvo que el componente este siendo utilizado en alguna parte del código. De ser así, Netbeans no lo removerá (Emitirá un mensaje) hasta que deje de ser utilizado, entonces será necesario comentarear (no recomendado) o eliminar el código que esta utilizando el componente.

Aqui en el ejemplo, apenas hemos ahorrado unas cuantas líneas al no declarar en el codigo los 3 componentes restantes, además de unos cuantos bytes en memoria. Sin embargo, en una aplicación más compleja, sin duda el tamaño de la aplicación se reducirá de manera notable. Si hay menos lines, menos tiempo para compilar, menos memoria utilizada, etc. Como contraparte a esto, tenemos que es necesario seguir este paso por cada componente, lo cual puede ser algo engorroso, pero muy provechoso a largo plazo. En este link dejo el proyecto que en este ejemplo he utilizado.

1 comentario »

  1. Exelente muchisimas gracias… creaba manualmente los atributos en el archivo java y no podia hacerle binding jejeje no aparecia, pero con esta solucion que acabas de dar ya quedo…

    Comentario por Inti Sandino — Domingo, diciembre 7, 2008 @ 10:43 PM


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: