Utilice los datos existentes para rellenar previamente los campos de un formulario adaptable.
Puede rellenar previamente los campos de un formulario adaptable utilizando los datos existentes. Cuando un usuario abre un formulario, los valores de esos campos se rellenan previamente. Para rellenar previamente los datos en un formulario adaptable, haga que los datos del usuario estén disponibles como un XML/JSON de relleno previo en el formato que se adhiera a la estructura de datos de rellenado previo de los formularios adaptables.
Un formulario adaptable puede tener una combinación de campos enlazados y no enlazados. Los campos enlazados son campos que se arrastran desde la ficha Buscador de contenido y que contienen un valor de propiedad bindRef
no vacío en el cuadro de diálogo de edición de campos. Los campos no enlazados se arrastran directamente desde el navegador de componentes de la barra de tareas y tienen un valor vacío bindRef
.
Puede rellenar previamente los campos enlazados y no enlazados de un formulario adaptable. Los datos de relleno previo contienen las secciones afBoundData y afUnBoundData para rellenar previamente los campos enlazados y no enlazados de un formulario adaptable. La sección afBoundData
contiene los datos de rellenado previo de los campos y paneles enlazados. Estos datos deben cumplir con el esquema del modelo de formulario asociado:
<?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 los campos enlazados con los mismos campos bindref o unbound con el mismo nombre, los datos especificados en la etiqueta XML o el objeto JSON se rellenan en todos los campos. Por ejemplo, dos campos de un formulario se asignan al nombre textbox
en los datos de relleno previo. Durante el tiempo de ejecución, si el primer campo de cuadro de texto contiene "A", entonces "A" se rellena automáticamente en el segundo cuadro de texto. Esta vinculación se denomina vinculación activa de campos de formulario adaptables.
La estructura de XML de relleno previo y el XML enviado para formularios adaptables basados en XFA es la siguiente:
Estructura XML de relleno previo: El formulario adaptable prefill XML para XFA debe ser compatible con el esquema de datos de la plantilla de formulario XFA. Para rellenar previamente los campos no enlazados, ajuste la estructura XML de relleno previo en la etiqueta /afData/afBoundData
.
Estructura XML enviada: Cuando no se utiliza ningún XML de relleno previo, el XML enviado contiene datos para los campos enlazados y no enlazados en la etiqueta afData
wrapper. Si se utiliza un XML de relleno previo, el XML enviado tiene la misma estructura que el XML de relleno previo. Si el XML de relleno previo comienza con la etiqueta raíz afData
, el XML de salida también tiene el mismo formato. Si el XML de relleno previo no tiene afData/afBoundData
wrapper y en su lugar comienza directamente desde la etiqueta raíz del esquema como employeeData
, el XML enviado también comienza con la etiqueta employeeData
.
Prefill-Submit-Data-ContentPackage.zip
Obtener
FileSample que contiene datos de relleno previo y datos enviados
La estructura de XML de relleno previo y XML enviado para formularios adaptables basados en esquema XML es la siguiente:
afData
wrapper. Si se utiliza el XML de relleno previo, el XML enviado tiene la misma estructura que el XML de relleno previo. Si el XML de relleno previo comienza con la etiqueta raíz afData
, el XML de salida tiene el mismo formato. Si el XML de relleno previo no tiene afData/afBoundData
envolvente y en su lugar comienza directamente desde la etiqueta raíz del esquema como employeeData
, el XML enviado también comienza con la etiqueta employeeData
.<?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 los campos cuyo modelo es un esquema XML, los datos se rellenan previamente en la etiqueta afBoundData
como se muestra en el ejemplo XML siguiente. Se puede utilizar para colocar el prefijo en un formulario adaptable uno o varios campos de texto sin enlazar.
<?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>
Se recomienda no utilizar campos no enlazados en paneles enlazados (paneles con bindRef
no vacíos que se hayan creado arrastrando componentes de la barra de tareas o la ficha Fuentes de datos). Puede causar la pérdida de datos de estos campos independientes. Además, se recomienda que los nombres de los campos sean únicos en todo el formulario, especialmente para los campos independientes.
<?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>
En el caso de los formularios adaptables basados en el esquema JSON, a continuación se describe la estructura de JSON de relleno previo y JSON enviado. Para obtener más información, consulte Creación de formularios adaptables utilizando el 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 los campos que utilizan el modelo de esquema JSON, los datos se rellenan previamente en el objeto afBoundData como se muestra en el archivo JSON de muestra siguiente. Se puede utilizar para colocar el prefijo en un formulario adaptable uno o varios campos de texto sin enlazar. A continuación se muestra un ejemplo de datos con el envoltorio afData/afBoundData
:
{
"afData": {
"afUnboundData": {
"data": { "textbox": "Ignorance is bliss :) " }
},
"afBoundData": {
"data": { {
"user": {
"address": {
"city": "Noida",
"country": "India"
}}}}}}}
A continuación se muestra un ejemplo sin afData/afBoundData
envolvente:
{
"user": {
"address": {
"city": "Noida",
"country": "India"
}}}
Se recomienda utilizar campos no enlazados en paneles enlazados (paneles con bindRef no vacío que se hayan creado arrastrando componentes de la barra de tareas o la ficha Fuentes de datos), ya que podría causar la pérdida de datos de los campos no enlazados. Se recomienda tener nombres de campo únicos en todo el formulario, especialmente en los campos no enlazados.
Para los formularios adaptables sin modelo de formulario, los datos de todos los campos se encuentran en la etiqueta <data>
de <afUnboundData> tag
.
Asimismo, tome nota de lo siguiente:
Las etiquetas XML para los datos de usuario enviados para varios campos se generan utilizando el nombre de los campos. Por lo tanto, los nombres de campo deben ser únicos.
<?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>
Para habilitar el servicio de prellenado, especifique la Configuración predeterminada del servicio de prellenado en la Configuración AEM de la consola web. Siga los siguientes pasos para configurar el servicio Prefill:
La configuración del servicio de relleno previo es aplicable a formularios adaptables, formularios HTML5 y conjuntos de formularios HTML5.
Abra Configuración de la consola web de Adobe Experience Manager utilizando la dirección URL:
https://<server>:<port>/system/console/configMgr
Busque y abra Default Prefill Service Configuration.
Introduzca la ubicación de datos o una expresión regular para las ubicaciones de archivos de datos. Algunos ejemplos de ubicaciones de archivos de datos válidos son:
De forma predeterminada, se permite el rellenado previo mediante archivos crx para todos los tipos de Forms adaptable (XSD, XDP, JSON, FDM y sin modelo de formulario). El rellenado previo solo se permite con archivos JSON y XML.
El servicio de cumplimentación previa ya está configurado para el formulario.
El protocolo crx se encarga de la seguridad de los datos rellenados previamente y, por lo tanto, está permitido de forma predeterminada. La cumplimentación previa a través de otros protocolos usando regex genéricos puede causar vulnerabilidad. En la configuración, especifique una configuración de URL segura para proteger los datos.
Por lo general, los campos enlazados (esquema de formulario) y no enlazados se crean en la misma forma adaptativa, pero las siguientes son algunas excepciones en caso de que el enlace sea repetible:
Como regla general, no mezcle campos enlazados y no enlazados si están intersectados en datos rellenados por el usuario final en campos no enlazados. Si es posible, debe modificar el esquema o la plantilla de formulario XFA y agregar una entrada para los campos no enlazados, de modo que también se convierta en enlazado y sus datos estén disponibles como otros campos en los datos enviados.
Los formularios adaptables se pueden rellenar previamente con datos de usuario en formato de datos de relleno previo mediante los protocolos siguientes cuando se configuran con regex válido:
http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=crx:///tmp/fd/af/myassets/sample.xml
El nodo especificado debe tener una propiedad denominada jcr:data
y contener los datos.
http://localhost:4502/content/forms/af/someAF.html?wcmmode=disabled&dataRef=file:///C:/Users/form-user/Downloads/somesamplexml.xml
El archivo de referencia debe estar en el mismo servidor.
http://localhost:4502/content/forms/af/xml.html?wcmmode=disabled&dataRef=http://localhost:8000/somesamplexmlfile.xml
http://localhost:4502/content/forms/af/abc.html?wcmmode=disabled&dataRef=service://[SERVICE_NAME]/[IDENTIFIER]
No se admite el paso de parámetros de autenticación.
También puede establecer el atributo data
en slingRequest
, donde el atributo data
es una cadena que contiene XML o JSON, como se muestra en el código de ejemplo siguiente (el ejemplo es 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);
%>
Puede escribir una cadena XML o JSON simple que contenga todos los datos y definirlos en slingRequest. Esto se puede hacer fácilmente en el JSP del procesador para cualquier componente, que desea incluir en la página donde puede establecer el atributo de datos slingRequest .
Por ejemplo, donde desea un diseño específico para la página con un tipo específico de encabezado. Para conseguirlo, puede escribir su propio header.jsp
, que puede incluir en el componente de página y establecer el atributo data
.
Otro buen ejemplo es un caso de uso en el que le gustaría rellenar previamente los datos de inicio de sesión a través de cuentas sociales como Facebook, Twitter o LinkedIn. En este caso, puede incluir un JSP simple en header.jsp
, que obtiene datos de la cuenta de usuario y establece el parámetro de datos.
prefill-page component.zip
Obtener
FileSample prefill.jsp en el componente de página
Se puede utilizar el servicio de rellenado previo personalizado para las situaciones en las que se leen constantemente datos de una fuente predefinida. El servicio de rellenado previo lee datos de orígenes de datos definidos y prefiere los campos del formulario adaptable con el contenido del archivo de datos de rellenado previo. También le ayuda a asociar permanentemente los datos prerellenados con un formulario adaptable.
El servicio de prefill es un servicio OSGi y se empaqueta a través del paquete OSGi. Puede crear el paquete OSGi, cargarlo e instalarlo en paquetes AEM Forms. Antes de comenzar a crear el paquete:
Coloque el archivo de datos (datos de relleno previo) en el repositorio crx. Puede colocar el archivo en cualquier ubicación de la carpeta \content del repositorio crx.
El paquete repetitivo (paquete de servicio de prellenado de muestra) contiene una implementación de muestra del servicio de prerellenado de AEM Forms. Abra el paquete repetitivo en un editor de código. Por ejemplo, abra el proyecto repetitivo en Eclipse para editarlo. Después de abrir el paquete repetitivo en un editor de código, realice los siguientes pasos para crear el servicio.
Abra el archivo src\main\java\com\adobe\test\Prefill.java para editarlo.
En el código, establezca el valor de:
nodePath:
La variable de ruta de nodo que señala a la ubicación del repositorio crx contiene la ruta del archivo de datos (prefill). Por ejemplo, /content/prefilldata.xmllabel:
El parámetro label especifica el nombre para mostrar del servicio. Por ejemplo, el servicio de precarga predeterminadoGuarde y cierre el archivo Prefill.java
.
Añada el paquete AEM Forms Client SDK
a la ruta de compilación del proyecto repetitivo.
Compile el proyecto y cree el .jar para el paquete.
Para iniciar el servicio de rellenado previo, cargue el archivo JAR en AEM Forms Web Console y active el servicio. Ahora, el servicio empieza a aparecer en el editor de formularios adaptables. Para asociar un servicio de rellenado previo a un formulario adaptable: