É possível preencher previamente os campos de um Formulário adaptável usando dados existentes. Quando um usuário abre um formulário, os valores desses campos são preenchidos previamente. Para preencher previamente os dados em um formulário adaptável, disponibilize os dados do usuário como um XML/JSON de preenchimento prévio no formato que segue a estrutura de dados de preenchimento prévio do Adaptive Forms.
Um Formulário adaptável pode ter uma combinação de campos vinculados e não vinculados. Campos vinculados são campos que são arrastados da guia Localizador de conteúdo e contêm campos não vazios bindRef
valor da propriedade na caixa de diálogo de edição do campo. Os campos não vinculados são arrastados diretamente do navegador de componentes do Sidekick e têm um vazio bindRef
valor.
É possível preencher previamente os campos vinculados e não vinculados de um Formulário adaptável. Os dados de pré-preenchimento contêm as seções afBoundData e afUnBoundData para preencher previamente os campos vinculados e não vinculados de um Formulário adaptável. A variável afBoundData
contém os dados de preenchimento prévio para campos e painéis vinculados. Esses dados devem ser compatíveis com o schema do modelo de formulário associado:
<?xml version="1.0" encoding="UTF-8"?>
<afData>
<afBoundData>
<employeeData>
.
</employeeData>
</afBoundData>
<afUnboundData>
<data>
<textbox>Hello World</textbox>
.
.
<numericbox>12</numericbox>
.
.
</data>
</afUnboundData>
</afData>
{
"afBoundData": {
"employeeData": { }
},
"afUnboundData": {
"data": {
"textbox": "Hello World",
"numericbox": "12"
}
}
}
Para campos vinculados com o mesmo vínculo ou campos não vinculados com o mesmo nome, os dados especificados na tag XML ou no objeto JSON são preenchidos em todos os campos. Por exemplo, dois campos em um formulário são mapeados para o nome textbox
nos dados de preenchimento prévio. Durante o tempo de execução, se o primeiro campo da caixa de texto contiver "A", então "A" será automaticamente preenchido na segunda caixa de texto. Esse vínculo é chamado de vínculo ativo de campos de formulário adaptável.
A estrutura do XML de preenchimento prévio e do XML enviado para o Adaptive Forms baseado em XFA é a seguinte:
Preencher previamente a estrutura XML: o XML de preenchimento prévio para o Formulário adaptável baseado em XFA deve ser compatível com o esquema de dados do modelo de formulário XFA. Para preencher previamente campos não vinculados, envolva a estrutura XML de preenchimento /afData/afBoundData
tag.
Estrutura XML enviada: quando nenhum XML de preenchimento prévio é usado, o XML enviado contém dados para campos ligados e não ligados em afData
tag wrapper. Se um XML de preenchimento prévio for usado, o XML enviado terá a mesma estrutura que o XML de preenchimento prévio. Se o XML de preenchimento prévio começar com a variável afData
raiz, o XML de saída também terá o mesmo formato. Se o XML de preenchimento prévio não tiver afData/afBoundData
invólucro e, em vez disso, inicia diretamente da tag raiz do esquema como employeeData
, o XML enviado também começa com o employeeData
tag.
Prefill-Submit-Data-ContentPackage.zip
Obter arquivo
Amostra contendo dados de preenchimento prévio e dados enviados
A estrutura do XML de preenchimento prévio e do XML enviado para o Adaptive Forms com base no esquema XML é a seguinte:
afData
tag wrapper. Se o XML de preenchimento prévio for usado, o XML enviado terá a mesma estrutura do XML de preenchimento prévio. Se o XML de preenchimento prévio começar com a variável afData
raiz, o XML de saída terá o mesmo formato. Se o XML de preenchimento prévio não tiver afData/afBoundData
invólucro e, em vez disso, inicie diretamente da tag raiz do esquema como employeeData
, o XML enviado também começa com o employeeData
tag.<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="https://adobe.com/sample.xsd"
xmlns="https://adobe.com/sample.xsd"
xmlns:xs="https://www.w3.org/2001/XMLSchema">
<xs:element name="sample" type="SampleType"/>
<xs:complexType name="SampleType">
<xs:sequence>
<xs:element name="noOfProjectsAssigned" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Para campos cujo modelo é o esquema XML, os dados são pré-preenchidos na variável afBoundData
conforme mostrado no exemplo XML abaixo. Ele pode ser usado para preencher previamente um Formulário adaptável com um ou mais campos de texto não vinculados.
<?xml version="1.0" encoding="UTF-8"?><afData>
<afUnboundData>
<data>
<textbox>Ignorance is bliss :) </textbox>
</data>
</afUnboundData>
<afBoundData>
<data>
<noOfProjectsAssigned>twelve</noOfProjectsAssigned>
</data>
</afBoundData>
</afData>
É recomendável não usar campos não vinculados em painéis vinculados (painéis com campos não vazios) bindRef
que foi criado ao arrastar componentes do Sidekick ou da guia Fontes de dados). Isso pode causar perda de dados desses campos não vinculados. Além disso, é recomendável que os nomes dos campos sejam exclusivos em todo o formulário, especialmente para campos não vinculados.
<?xml version="1.0" encoding="UTF-8"?><config>
<assignmentDetails descriptionOfAssignment="Some Science Project" durationOfAssignment="34" financeRelatedProject="1" name="Lisa" numberOfMentees="1"/>
<assignmentDetails descriptionOfAssignment="Kidding, right?" durationOfAssignment="4" financeRelatedProject="1" name="House" numberOfMentees="3"/>
</config>
Para o Adaptive Forms com base no esquema JSON, a estrutura do JSON de preenchimento prévio e do JSON enviado é descrita abaixo. Para obter mais informações, consulte Criação de Forms adaptável usando o esquema JSON.
{
"id": "https://some.site.somewhere/entry-schema#",
"$schema": "https://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"address": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
}
}
}
}
}
Para campos que usam o modelo de esquema JSON, os dados são pré-preenchidos no objeto afBoundData, como mostrado na amostra JSON abaixo. Ele pode ser usado para preencher previamente um Formulário adaptável com um ou mais campos de texto não vinculados. Veja abaixo um exemplo de dados com afData/afBoundData
invólucro:
{
"afData": {
"afUnboundData": {
"data": { "textbox": "Ignorance is bliss :) " }
},
"afBoundData": {
"data": { {
"user": {
"address": {
"city": "Noida",
"country": "India"
}}}}}}}
Veja abaixo um exemplo sem afData/afBoundData
invólucro:
{
"user": {
"address": {
"city": "Noida",
"country": "India"
}
}
}
O uso de campos não vinculados em painéis vinculados (painéis com bindRef não vazios que foram criados ao arrastar componentes da guia Sidekick ou Fontes de dados) é não recomendada, pois pode causar perda de dados dos campos não vinculados. É recomendável ter nomes de campo exclusivos em todo o formulário, especialmente para campos não vinculados.
Para o Adaptive Forms sem modelo de formulário, os dados de todos os campos estão sob o <data>
tag de <afUnboundData> tag
.
Além disso, tome nota do seguinte:
As tags XML para os dados do usuário enviados para vários campos são geradas usando o nome dos campos. Portanto, os nomes dos campos devem ser exclusivos.
<?xml version="1.0" encoding="UTF-8"?><afData>
<afUnboundData>
<data>
<radiobutton>2</radiobutton>
<repeatable_panel_no_form_model>
<numericbox>12</numericbox>
</repeatable_panel_no_form_model>
<repeatable_panel_no_form_model>
<numericbox>21</numericbox>
</repeatable_panel_no_form_model>
<checkbox>2</checkbox>
<textbox>Nopes</textbox>
</data>
</afUnboundData>
<afBoundData/>
</afData>
Use o alloweddataFileLocations
propriedade do Configuração do serviço de preenchimento prévio padrão para definir o local dos arquivos de dados ou um regex (expressão regular) para os locais dos arquivos de dados.
O seguinte arquivo JSON exibe uma amostra:
{
"alloweddataFileLocations": "`file:///C:/Users/public/Document/Prefill/.*`"
}
Para definir valores de uma configuração, Gerar configurações de OSGi usando o SDK do AEM e implantar a configuração para a instância do Cloud Service.
Geralmente, os campos vinculados (esquema de formulário) e não vinculados são criados no mesmo Formulário adaptável, mas as exceções a seguir são algumas caso os campos vinculados sejam repetíveis:
Como regra geral, não misture campos vinculados e não vinculados se eles forem cruzados em dados preenchidos pelo usuário final em campos desvinculados. Se possível, você deve modificar o esquema ou o modelo de formulário XFA e adicionar uma entrada para campos não vinculados, para que também se torne vinculado e seus dados estejam disponíveis como outros campos nos dados enviados.
O Forms adaptável pode ser preenchido previamente com dados do usuário no formato de dados de preenchimento prévio por meio dos seguintes protocolos quando configurado com regex válido:
http
https://`servername`/content/forms/af/xml.html?wcmmode=disabled&dataRef=crx:///tmp/fd/af/myassets/sample.xml
O nó especificado deve ter uma propriedade chamada jcr:data
e mantenha os dados.
https://`servername`/content/forms/af/someAF.html?wcmmode=disabled&dataRef=file:///C:/Users/form-user/Downloads/somesamplexml.xml
O arquivo referenciado deve estar no mesmo servidor.
https://`servername`/content/forms/af/xml.html?wcmmode=disabled&dataRef=https://servername/somesamplexmlfile.xml
https://`servername`/content/forms/af/abc.html?wcmmode=disabled&dataRef=service://[SERVICE_NAME]/[IDENTIFIER]
Não há suporte para a transmissão de parâmetros de autenticação.
Você também pode definir a variável data
atributo em slingRequest
, em que o data
attribute é uma string que contém XML ou JSON, conforme mostrado no código de exemplo abaixo (o exemplo é para XML):
<%
String dataXML="<afData>" +
"<afUnboundData>" +
"<data>" +
"<first_name>"+ "Tyler" + "</first_name>" +
"<last_name>"+ "Durden " + "</last_name>" +
"<gender>"+ "Male" + "</gender>" +
"<location>"+ "Texas" + "</location>" +
"</data>" +
"</afUnboundData>" +
"</afData>";
slingRequest.setAttribute("data", dataXML);
%>
Você pode gravar uma sequência XML ou JSON simples contendo todos os seus dados e defini-la em slingRequest. Isso pode ser feito facilmente no JSP do renderizador para qualquer componente, que você deseja incluir na página, onde é possível definir o atributo de dados slingRequest.
Por exemplo, quando você deseja um design específico para a página com um tipo específico de cabeçalho. Para isso, você pode escrever o seu próprio header.jsp
, que você pode incluir no componente de página e definir a data
atributo.
Outro bom exemplo é um caso de uso em que você deseja preencher previamente os dados de logon por meio de contas sociais como Facebook, Twitter ou LinkedIn. Nesse caso, é possível incluir um JSP simples em header.jsp
, que busca dados da conta de usuário e define o parâmetro de dados.
prefill-page component.zip
Obter arquivo
Amostra de prefill.jsp no componente Página
Você pode usar o serviço de preenchimento prévio personalizado para os cenários, onde lê constantemente os dados de uma fonte predefinida. O serviço de preenchimento prévio lê os dados de fontes de dados definidas e preenche os campos do Formulário adaptável com o conteúdo do arquivo de dados de preenchimento prévio. Também ajuda a associar permanentemente os dados pré-preenchidos a um Formulário adaptável.
O serviço de pré-preenchimento é um serviço OSGi e é empacotado por meio do pacote OSGi. Crie o pacote OSGi, faça upload e instale-o no AEM Forms pacotes. Antes de começar a criar o pacote:
Baixar o pacote padrão
Coloque o arquivo de dados (dados de preenchimento prévio) no repositório crx. Você pode colocar o arquivo em qualquer local na pasta \contents do repositório crx.
O pacote de modelo (exemplo de pacote de serviço de preenchimento prévio) contém exemplos de implementação de AEM Forms serviço de preenchimento prévio. Abra o pacote padrão em um editor de código. Por exemplo, abra o projeto padronizado no Eclipse para edição. Depois de abrir o pacote padrão em um editor de código, execute as etapas a seguir para criar o serviço.
Abra o arquivo src\main\java\com\adobe\test\Prefill.java para edição.
No código, defina o valor de:
nodePath:
A variável de caminho do nó que aponta para o local do repositório crx contém o caminho do arquivo de dados (pré-preenchimento). Por exemplo, /content/prefilldata.xmllabel:
O parâmetro label especifica o nome de exibição do serviço. Por exemplo, Serviço de preenchimento prévio padrãoSalve e feche o Prefill.java
arquivo.
Adicione o AEM Forms Client SDK
pacote para o caminho de compilação do projeto padrão.
Compile o projeto e crie o .jar para o pacote.
Para iniciar o serviço de preenchimento prévio, faça upload do arquivo JAR para AEM Forms Console da Web e ativar o serviço. Agora, o serviço começa a aparecer no editor Adaptive Forms. Para associar um serviço de preenchimento prévio a um Formulário adaptável: