Scripting de choice items en XFA

Unit: HPDFXFARuntime

Un campo con ui.choiceList expone métodos de choice item durante la ejecución nativa de eventos JavaScript y FormCalc, incluidas instancias repetidas de campo y aliases retenidos por script objects

Métodos y propiedades

MemberBehavior
lengthNúmero de solo lectura de los export items actuales
selectedIndexPrimer índice seleccionado en base cero, o -1 cuando no hay ninguno; asignar cualquier entero negativo limpia la selección, mientras que un valor no negativo fuera de rango o no entero lanza antes de cambiarla
getDisplayItem(index)Texto de display en el índice, o null cuando el índice es inválido
getSaveItem(index)Texto de export en el índice, o null cuando el índice es inválido
boundItem(display)Texto de export del primer texto de display que coincida exactamente, o null cuando ninguno coincide
getItemState(index)Si el ítem está seleccionado; un índice inválido lanza
setItemState(index, selected)Actualiza la selección del ítem; seleccionar un ítem reemplaza la selección previa en un campo de selección única y preserva los demás índices seleccionados en uno multiselección
addItem(display, bound)Agrega un ítem sin cambiar los ítems seleccionados existentes; omitir el segundo argumento usa una cadena de export vacía
deleteItem(index)Borra un ítem y desplaza los índices posteriores reteniendo la identidad de los aliases de ítem que sobreviven; devuelve false para un índice inválido
clearItems()Quita los ítems actuales y limpia la selección; una lista runtime explícitamente vacía permanece vacía tras guardar y recargar
setItems(text, columns)Reemplaza los ítems actuales a partir de columnas separadas por comas y limpia la selección; columns es 1 por defecto, una fila de una columna provee tanto el texto de display como el de export, y una fila más larga usa su primera columna como display y su última como export; devuelve false si el conteo de columnas es inválido o no divide el conteo de campos de entrada

Los índices son enteros y jamás se coercionan desde cadenas; los métodos de ítem exigen sus conteos de argumentos documentados, con el segundo argumento opcional aceptado por addItem y setItems

Los valores de ítem preservan Unicode, espacios al inicio y al final, exports vacíos explícitos y saltos de línea; los caracteres de control XML inválidos y los suplentes UTF-16 huérfanos se rechazan antes de mutar la lista

Estado inmediato y aliases

Los ítems nuevos son visibles de inmediato a través de los métodos de ítem y del property DOM, y un alias de ítem borrado no puede redirigir a un ítem superviviente que se mueva al índice borrado

Reemplazar o limpiar la lista crea identidades de reemplazo distintas; los aliases de script object retenidos hacia ítems quitados fallan en lecturas y escrituras posteriores, mientras que los aliases supervivientes siguen apuntando al mismo ítem a través de las ejecuciones de eventos

Una asignación directa de rawValue, una escritura al Data DOM, un commit público del valor del widget o una mutación escalar de un export item invalida los índices explícitos cacheados, incluidas las asignaciones que preservan la misma cadena raw

Persistencia y selección exacta

SaveToBytes escribe los ítems de formulario reales por instancia y los valores sincronizados; modificar una instancia repetida preserva las demás instancias y sus data scopes

Los exports duplicados y vacíos se pueden seleccionar por índices exactos a través de la API de ítems; el campo de formulario guardado registra los índices canónicos y el raw value coincidente en atributos opcionales del namespace urn:hotpdf:xfa:runtime

Los ítems y nodos de valor XFA estándar siguen presentes independientemente de esos atributos opcionales; las escrituras de valor posteriores invalidan los atributos para que índices vencidos no puedan seleccionar el export duplicado equivocado

El consumidor nativo de PDF escribe pares /Opt de export/display que coinciden, índices /I exactos y cadenas o arrays /V, y construye las apariencias a partir de las etiquetas de display seleccionadas

Transacciones y límites

Los cambios de ítem participan de la transacción de eventos y del script journal existentes; una falla de límite de valor nativa, una cancelación del llamador o una excepción de evento no manejada restauran el XDP guardado, el estado léxico del script y los bindings antes de un reintento posterior

Las asignaciones de nodos, las columnas de entrada, los valores UTF-8, los payloads de operaciones XML, el recorrido de propiedades nativo y el cloning retienen los presupuestos configurados de script y runtime y los checks de cancelación

Ejemplo

var list = this.parent.choice;
list.clearItems();
list.addItem("Display A", "same");
list.addItem("Display B", "same");
list.selectedIndex = 1;
if (list.getDisplayItem(list.selectedIndex) !== "Display B")
    throw new Error("Unexpected selected label");

Para variables FormCalc que retienen un campo en vez de su valor escalar, usa var list = Ref($.parent.choice) antes de llamar a los métodos de ítem

El vocabulario de métodos y los argumentos de columnas siguen la Adobe Designer Scripting Reference; el runtime usa semántica de reemplazo para setItems, como describe el soporte de scripting de formularios HTML5 de Adobe