ADF tips: Mostrar el registro seleccionado en un af:tree
23/01/2016 -
En ocasiones para presentar la estructura de nuestros datos utilizamos un af:tree ya que es una forma simple y elegante de poder mostrar el maestro y el detalle en un mismo componente. En este ADF tip vais a poder ver cómo mostrar el registro seleccionado es un af:tree basado en un view object recursivo.
Supongamos que tenemos esta estructura basada en la tabla empleados del schema hr de Oracle.
Lo primero que tenemos que hacer es arrastrar la vista de la paleta de data controls a nuestra página para crear el árbol.
Una vez creado el árbol, para mostrar el registro seleccionado, añadiremos un formulario basado en la vista de empleados. Aquí tenemos el problema: ¿en qué instancia de la vista basamos el formulario? Si lo hacemos en la instancia padre sólo se mostrará en el formulario el registro padre cuando seleccionemos alguno de los hijos.
Para solucionar este problema, y que se muestre el registro correspondiente, lo que vamos a hacer es añadir en el AppModule otra instancia de la vista EmployeesView. En este caso la he llamado ‘EmployeesDisplayVO‘.
El siguiente paso es crear en el pageDef asociado a nuestra página un Action Binding de la operación ‘setCurrentRowWithKey’ de la instancia que acabamos de crear ‘EmployeesDisplayVO’.
El último paso es crear un Selection Listener personalizado en un bean y asociarlo al af:tree.
En este método lo que vamos a hacer es, a parte de ejecutar el método makeCurrent del modelo del árbol, obtener las Keys seleccionadas y ejecutar el método setCurrentRowWithKey que hemos creado en el pageDef.
La key que tenemos que utilizar para llamar al método es la última de la lista keyList.get(keyList.size() – 1) ya que, por ejemplo, si seleccionamos un registro del segundo nivel, la lista de claves contendrá en primero la clave del padre y después la clave del hijo.
Si volvemos a ejecutar la aplicación y seleccionamos cualquier registro veremos que se muestra correctamente en el formulario.