Acceso por ID a un componente ADF por JavaScript

Hola a todos.

Una parte interesante acerca del uso de JavaScript con componentes ADF es el acceso a los mismos mediante su identificador. Puesto que el compilador de JSP's de Oracle completa con un autogenerado estos identificadores. Dificulta el uso de JavaScript común.

Por ello Oracle ADF trae consigo su propio API de JavaScript: API JavaScript de Oracle ADF .

Para acceder mediante el ID a un componente ADF pueden darse los siguientes casos:
  • Si el componente ADF NO se encuentra en uno de los denominados "Naming Containers" se puede utilizar la llamada AdfPage.PAGE.findComponentByAbsoluteId(idComponente). 
  • En el caso de usar esta llamda estando dentro de "Naming Containers" es necesaria ser llamada como AdfPage.PAGE.findComponentByAbsoluteId(rutaComponente:idComponente) donde rutaComponente es la ruta absoluta o relativa donde se encuenta nuestro componente (en lugar de usar el caracter '/' como en sistema de ficheros se utiliza el cararcter ':').
  • En caso de que el componente ADF se encuentre dentro de un "Naming Container" debe utilizarse la llamada AdfUIComponent.findComponent(idComponente).
En ambos casos es necesario la poner en el componente ADF la propiedad clientComponent=true para asegurar que los identificadores serán absolutos a nivel de cliente.

Documentación:
Ejemplos

Ejemplo 1: Caso en el que no se encuentre dentro de un "Naming Container":


Ejemplo 2: Caso de que se encuentre dentro de un "Naming Cointainer" pero usando la llamada AdfPage.PAGE.findComponentByAbsoluteId.


Se puede observar que se ha usado la nomenclatura p1:nombre para el acceso al componente (ésta puede ser incluso relativa). Para saber cual es el identificador "named" recomiendo que ejecutéis la página y mediante herramientas tipo Firebug observar que identificador ha asignado al componente (ahorra tener que pensar la ruta). Esto es recomendable para páginas que usan complicadas plantillas y numerosos contenedores ADF.

Ejemplo 3: Caso en el que se encuentre dentro de un "Naming Container":



En este caso no es necesario conocer la posición de nuestro componente dado que podrá ser consultado a partir del fuente procedente del componente que dispara la función JavaScript.

PD: Agradecer a Francisco Roldan por su aportación en esta entrada.

Un saludo.

Comments

Popular posts from this blog

OJET: Inter-Module communication in TypeScript Template

OJET: Build and Deploy in an Application Server

OJET: Select All options using only Checkboxset