En estos días estuve trabajando con un requerimiento de un proyecto en el cual detectamos algunas características especificas de las listas de valores en JDev11g, a partir de lo cual decidí crear esta entrada. Dado que en post anteriores ya he presentado las bases en como crear las listas de valores, en este articulo voy a explicar brevemente los distintos tipos que se tienen en JDev11g, así como también algunos tips para trabajarlas.
Vamos a presentar los distintos Departamentos de una organización como una lista de valores; internamente el atributo que nos interesa es el ID del departamento (departmentId), sin embargo para el UI la idea es presentar el nombre del mismo (departmentName).
Los tipos que tenemos desde el Modelo en el cual definimos la lista son:
Choice List y Combo Box: Es la opción a elegir para obtener un af:selectOneChoice o la lista de valores tradicional. La unica diferencia es que con combo boxes se puede tener un historial de los elegidos previamente.
ComboBox with List of Values: Esta opción se renderiza como un af:inputComboboxListOfValues esta lista de valores se puede presentar directamente como un look and feel más AJAX, o también tiene la funcionalidad automática de presentar un componente de busqueda.
Muy util para cuando se requiere hacer un query sobre otra tabla para obtner este valor. Una característica de esta lista es que si en un backing bean hacemos ejecutamos getValue(), esta lista nos va a devolver por defecto el número correspondiente a la posición, más no el ID. Si queremos obtener el valor, en el binding de la lista ajustamos la propiedad includeSelectionAttr
Input Text with List of Values: Parecido al anterior pero en este caso el UI se presenta como una lupa de busqueda, renderiza como un af:inputListOfValues, la cual puede activar una busqueda o puede hacer un query directo a la fuente de datos, si se quiere hacer la busqueda sobre otra tabla, es ideal.
List Box: Presenta la lista dentro de una caja de opciones, ideal cuando se quiere seleccionar más de un valor. Se renderiza como un af:selectOneListBox.
Estas presentaciones de listas pueden también ser intercambiadas en la interfaz gráfica así como también los tipos de bindigs, de las mismas. Para cambiar una lista desde la interfaz, solo basta con ir a la estructura, seleccionar la lista de valores, click derecho y hacer click en Convert. Esto también se puede hacer directamente sobre el diseñador gráfico.
Otro de los elementos que se puede configurar desde la definición a través del VO es la opción de búsqueda. Esta opción permite crear un pop-up para realizar una búsqueda la fuente de datos de la lista (lo cual puede ser otro VO y en este caso lo que se hace es ejecutar el query con base en ciertos parámetros.
El o los valores que se retornan, una vez se escoge un elemento de la lista es también configurable, lo cual es una opción es muy útil si requerimos asignar más de un valor sobre atributos del VO base.
El binding de las listas de valores puede ser de 2 tipos List binding o ListOfValue binding. El segundo nos da una serie de opciones avanzadas para configurar el comportamiento de la lista, normalmente de acuerdo como se defina la lista desde el VO este binding se hace de manera automática, sin embargo a través del PageDef podríamos cambiar entre uno y otro.