Scripting de choice items no XFA

Unit: HPDFXFARuntime

Um campo com ui.choiceList expõe os métodos de choice items durante a execução nativa de eventos JavaScript e FormCalc, incluindo instâncias repetidas de campos e aliases retidos por objetos de scripts

Métodos e propriedades

MembroComportamento
lengthContagem read-only de export items atuais
selectedIndexPrimeiro índice selecionado com base zero, ou -1 quando nenhum está selecionado; atribuir qualquer inteiro negativo limpa a seleção, enquanto um valor não negativo fora da faixa ou não inteiro lança erro antes de mudá-la
getDisplayItem(index)Texto de display no índice, ou null quando o índice é inválido
getSaveItem(index)Texto de export no índice, ou null quando o índice é inválido
boundItem(display)Texto de export para o primeiro texto de display exatamente correspondente, ou null quando nenhum texto de display corresponde
getItemState(index)Se o item está selecionado; um índice inválido lança erro
setItemState(index, selected)Atualiza a seleção do item; selecionar um item substitui a seleção anterior num campo de seleção única e preserva os outros índices selecionados num campo multi-select
addItem(display, bound)Anexa um item sem mudar os items selecionados existentes; omitir o segundo argument usa uma string de export vazia
deleteItem(index)Exclui um item e desloca os índices posteriores, retendo a identidade dos aliases sobreviventes de items; retorna false para um índice inválido
clearItems()Remove os items atuais e limpa a seleção; uma lista de runtime explicitamente vazia permanece vazia após save e reload
setItems(text, columns)Substitui os items atuais a partir de colunas separadas por vírgulas e limpa a seleção; columns tem default 1, uma linha de uma coluna fornece tanto o texto de display quanto o de export, e uma linha mais longa usa a primeira coluna como display e a última como export; retorna false se a contagem de colunas é inválida ou não divide a contagem de campos da entrada

Índices são inteiros e nunca são coeridos de strings; os métodos de items exigem as contagens documentadas de arguments, com o segundo argument opcional aceito por addItem e setItems

Valores de items preservam Unicode, espaços no início e no fim, exports explicitamente vazios e quebras de linha; caracteres de controle XML inválidos e surrogates UTF-16 não pareados são rejeitados antes da mutação da lista

Estado imediato e aliases

Items novos são imediatamente visíveis pelos métodos de items e pelo DOM de propriedades, e um alias de item excluído não pode redirecionar para um item sobrevivente que se move para o índice excluído

Substituir ou limpar a lista cria identidades de substituição distintas; aliases retidos de objetos de scripts para items removidos falham em leituras e escritas posteriores, enquanto aliases sobreviventes continuam endereçando o mesmo item entre execuções de eventos

Uma atribuição direta de rawValue, escrita no Data DOM vinculado, commit público de valor de widget ou mutação escalar de item de export invalida os índices explícitos em cache, incluindo atribuições que preservam a mesma string raw

Persistência e seleção exata

SaveToBytes grava os items reais de formulários por instância e os valores sincronizados; modificar uma instância repetida preserva as outras instâncias e os escopos de dados delas

Exports duplicados e vazios podem ser selecionados por índices exatos através da API de items; o campo de formulário salvo registra os índices canônicos e o valor raw correspondente em atributos opcionais no namespace urn:hotpdf:xfa:runtime

Items e nós de valores padrão do XFA permanecem presentes independentemente desses atributos opcionais; escritas posteriores de valores invalidam os atributos para que índices velhos não selecionem o export duplicado errado

O consumer nativo PDF grava pares export/display correspondentes de /Opt, índices /I exatos e strings ou arrays /V, e constrói aparências a partir dos rótulos de display selecionados

Transações e limites

Mudanças de items participam da transação e do journal existentes de eventos; uma falha nativa de limite de valores, cancelamento do chamador ou exceção de evento não tratada restaura o XDP salvo, o estado lexical de scripts e os bindings antes de um retry posterior

Alocações de nós, colunas de entrada, valores UTF-8, payloads de operações XML, traversal e clonagem nativos de propriedades retêm os orçamentos configurados de scripts e runtime e as checagens de cancelamento

Exemplo

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 variáveis FormCalc que retêm um campo em vez do valor escalar dele, use var list = Ref($.parent.choice) antes de chamar os métodos de items

O vocabulário de métodos e os arguments de colunas seguem a Adobe Designer Scripting Reference; o runtime usa semântica de substituição para setItems, como descrito no suporte a scripting de HTML5 forms da Adobe