miércoles, 17 de septiembre de 2014

Obtener un valor de la tabla en un bean 11g

Descripción: En este artículo veremos cómo obtener un valor de una fila (row) de una tabla (aftable) a través de un bean. Tomaremos el valor de un atributo (attribute) y lo mostraremos en pantalla.

Nota: Puedes Descargar el ejemplo para que puedas hacer pruebas.

En este ejemplo veremos cómo mostrar un valor de una fila seleccionada en un aftable.

En primer lugar tenemos que haber creado la tabla en nuestra página.
En el ejemplo arrastraremos una view a la página de diseño (design) y se cree la tabla que muestre los datos.

vista diseño aftable
vista diseño aftable



Podemos mirar en la Page Data Binding Definition (lo que en 10g se llamaba Página de definición), cómo es la estructura de datos que se carga en la página y que contiene la tabla.

vista Page data binding definition
vista page Data Binding Definition
vista codigo Page Data Binding Definition
vista código de Page Data Binding Definition


 
Nota: La utilidad de esta información es que si en algún momento no sabemos cómo se llaman los atributos (campos) de una tabla, podamos ir a consultarlo.
Esto a veces es necesario cuando los datos no se muestran correctamente, y pueden tener como origen, en que no se ha incluido los atributos necesarios.



Tomar el valor del Page Data Binding Definition en un bean


El siguiente código devuelve el valor que se encuentra en un binding.

método para recoger un valor del binding

Vamos a explicar el código parte por parte:


        BindingContext bindingContext = BindingContext.getCurrent();
        BindingContainer bindings = bindingContext.getCurrentBindingsEntry();



En esta parte del código estamos haciendo referencia al binding vigente en este momento.
Es decir, de la página actual que se esté mostrando.
Si este código se utiliza en otras páginas será el page data definition correspondiente.


DCIteratorBinding iteratorBinding = (DCIteratorBinding) bindings.get("DepartmentsViewIterator");


Se recoge con esta instrucción el iterator que se encuentra en el binding. Este iteratorBinding, corresponde con el iterator que vimos en la página de definición.
Se recoge este iteratorBinding pues es el que gobierna el aftable, y el que nos va a indicar qué dato se encuentra seleccionado en ese momento.


        if (iteratorBinding != null)
        {
            Row currentRow = iteratorBinding.getCurrentRow();
            if (currentRow != null)
            {
                resultado = (String) currentRow.getAttribute("DepartmentName");   
            }
        }

Primero se pregunta si el itertorBinding es null.
Es importante esto porque puede que el valor que contiene la variable iteratorBinding lo sea.
Algunas de las causas por las que puede ser null:
- Que se haya escrito mal el nombre del iterator.

- Que en el momento en que se llama al iterator, éste no exista.



Es muy típico encontrarse con un nullPointerException por estas causas, por lo que se recomienda hacer siempre esta comprobación.

Una vez comprobado esto con el if , lo que se hace es obtener la fila actual. 
Para ello recurrimos al método getCurrentRow().

Otra vez, volvemos s hacer la consulta de si el valor obtenido con el getCurrentRow() es null o no.
Puede ser que no hubiera ningún elemento seleccionado.


 resultado = (String) currentRow.getAttribute("DepartmentName");   

Con esta estructura, tomamos el valor (attribute), de la fila (row) actual y que hemos guardado en currentRow.

Con esto ya tendremos en el bean el valor, y podemos utilizarlo como queramos.
En este ejemplo, lo que se hizo fue mostrar en pantalla dicho valor, y para ello, se creó un método get, con el fin de poner el valor dentro de un outputText.





Al ejecutar el ejemplo, se nos muestra la tabla con los distintos campos (attributes), y al seleccionar una fila, y luego, pulsar el botón "Actualizar", aparece al lado de éste el nombre del Departamento seleccionado.

Puedes descargar el ejemplo en este enlace: Descargar Ejemplo obtener Valor tabla
La página del ejemplo es vistaDepartamentos.jspx.

Artículos relacionados:
- Crear una tabla de Datos con aftable en 11g

No hay comentarios:

Publicar un comentario