Mensajes de error de validación estándar para formularios adaptables

Los formularios adaptables validan las entradas que se proporcionan en los campos en función de criterios de validación predefinidos. Los criterios de validación hacen referencia a los valores de entrada aceptables para los campos de un formulario adaptable. Puede definir los criterios de validación en función del origen de datos que utilice con el formulario adaptable. Por ejemplo, si utiliza los servicios web RESTful como fuente de datos, puede definir los criterios de validación en un archivo de definición Swagger.

Si los valores de entrada cumplen los criterios de validación, los valores se envían al origen de datos. De lo contrario, el formulario adaptable muestra un mensaje de error.

De forma similar a este enfoque, los formularios adaptables ahora se pueden integrar con servicios personalizados para realizar validaciones de datos. Si los valores de entrada no cumplen los criterios de validación y el mensaje de error de validación que devuelve el servidor está en el formato de mensaje estándar, los mensajes de error se muestran en el formulario a nivel de campo.

Si los valores de entrada no cumplen los criterios de validación y el mensaje de error de validación del servidor no está en el formato de mensaje estándar, los formularios adaptables proporcionan un mecanismo para transformar los mensajes de error de validación en un formato estándar para que se muestren en el campo del formulario. Puede transformar el mensaje de error en el formato estándar utilizando cualquiera de los dos métodos siguientes:

  • Agregar controlador de error personalizado en el envío de formulario adaptable
  • Agregar un controlador personalizado a la acción Invocar servicio mediante el Editor de reglas

En este artículo se describe el formato estándar para los mensajes de error de validación y las instrucciones para transformar los mensajes de error de un formato personalizado a un formato estándar.

Formato de mensaje de error de validación estándar

Los formularios adaptables muestran los errores en el nivel de campo si los mensajes de error de validación del servidor tienen el siguiente formato estándar:

   {
    errorCausedBy : "SERVER_SIDE_VALIDATION/SERVICE_INVOCATION_FAILURE"
    errors : [
        {
             somExpression  : <somexpr>
             errorMessage / errorMessages : <validationMsg> / [<validationMsg>, <validationMsg>]

        }
    ]
    originCode : <target error Code>
    originMessage : <unstructured error message returned by service>
}

donde:

  • errorCausedBy describe el motivo del error
  • errors mencione la expresión SOM de los campos en los que se han producido errores en los criterios de validación junto con el mensaje de error de validación
  • originCode contiene el código de error devuelto por el servicio externo
  • originMessage contiene los datos de error sin procesar devueltos por el servicio externo

Configuración del envío de formularios adaptables para agregar controladores personalizados

Si el mensaje de error de validación del servidor no se muestra en el formato estándar, puede habilitar el envío asincrónico y agregar un controlador de error personalizado en el envío del formulario adaptable para convertir el mensaje en un formato estándar.

Configuración del envío asincrónico de formularios adaptables

Antes de añadir el controlador personalizado, debe configurar el formulario adaptable para el envío asincrónico. Siga estos pasos:

  1. En el modo de creación de formularios adaptables, seleccione el objeto Contenedor de formulario y pulse propiedades de formulario adaptable para abrir sus propiedades.

  2. En la sección de propiedades de Envío, habilite Usar envío asincrónico.

  3. Select Revalidate en el servidor para validar los valores de los campos de entrada en el servidor antes del envío.

  4. Seleccione Enviar acción:

    • Select Enviar mediante el modelo de datos de formulario y seleccione el modelo de datos adecuado, si utiliza el servicio web RESTful basado en modelo de datos de formulario como fuente de datos.
    • Select Enviar al extremo REST y especifique el Dirección URL/ruta de redireccionamiento, si utiliza los servicios web RESTful como fuente de datos.

    propiedades de envío de formulario adaptable

  5. Pulse Guardar para guardar las propiedades.

Agregar controlador de error personalizado en el envío de formulario adaptable

AEM Forms proporciona controladores de éxito y de errores listos para usar para los envíos de formularios. Los controladores son funciones del lado del cliente que se ejecutan en función de la respuesta del servidor. Cuando se envía un formulario, los datos se transmiten al servidor para su validación, lo que devuelve una respuesta al cliente con información sobre el evento de éxito o error del envío. La información se pasa en forma de parámetros al controlador correspondiente para ejecutar la función.

Ejecute los siguientes pasos para agregar el controlador de error personalizado en el envío del formulario adaptable:

  1. Abra el formulario adaptable en modo de creación, seleccione cualquier objeto de formulario y pulse para abrir el editor de reglas.
  2. Seleccione Formulario en el árbol Objetos de formulario y pulse Crear.
  3. Select Error en el envío en la lista desplegable Evento .
  4. Escriba una regla para convertir la estructura de error personalizada a la estructura de error estándar y pulse Listo para guardar la regla.

El siguiente es un código de ejemplo para convertir una estructura de error personalizada en la estructura de error estándar:

var data = $event.data;
var som_map = {
    "id": "guide[0].guide1[0].guideRootPanel[0].Pet[0].id_1[0]",
    "name": "guide[0].guide1[0].guideRootPanel[0].Pet[0].name_2[0]",
    "status": "guide[0].guide1[0].guideRootPanel[0].Pet[0].status[0]"
};

var errorJson = {};
errorJson.errors = [];

if (data) {
    if (data.originMessage) {
        var errorData;
        try {
            errorData = JSON.parse(data.originMessage);
        } catch (err) {
            // not in json format
        }

        if (errorData) {
            Object.keys(errorData).forEach(function(key) {
                var som_key = som_map[key];
                if (som_key) {
                    var error = {};
                    error.somExpression = som_key;
                    error.errorMessage = errorData[key];
                    errorJson.errors.push(error);
                }
            });
        }
        window.guideBridge.handleServerValidationError(errorJson);
    } else {
        window.guideBridge.handleServerValidationError(data);
    }
}

La variable var som_map enumera la expresión SOM de los campos de formulario adaptables que desea transformar en el formato estándar. Puede ver la expresión SOM de cualquier campo en un formulario adaptable; para ello, pulse el campo y seleccione Ver expresión SOM.

Con este controlador de error personalizado, el formulario adaptable convierte los campos enumerados en var som_map al formato de mensaje de error estándar. Como resultado, los mensajes de error de validación se muestran a nivel de campo en el formulario adaptable.

Añadir un controlador personalizado mediante la acción Invocar servicio

Ejecute los siguientes pasos para añadir el controlador de error para convertir una estructura de error personalizada en la estructura de error estándar mediante del Editor de reglas Acción Invocar servicio:

  1. Abra el formulario adaptable en modo de creación, seleccione cualquier objeto de formulario y pulse Editor de reglas para abrir el editor de reglas.
  2. Pulse Crear.
  3. Cree una condición en la variable When de la regla. Por ejemplo, Cuando[Nombre del campo] cambia. Select se cambia de la variable Seleccionar estado lista desplegable para lograr esta condición.
  4. En el Entonces , seleccione Invocar servicio de la variable Seleccionar acción lista desplegable.
  5. Seleccione un servicio de publicación y sus enlaces de datos correspondientes en el Entrada para obtener más información. Por ejemplo, si desea validar Nombre, ID y Estado en el formulario adaptable, seleccione un servicio Post (pet) y elija pet.name, pet.id y pet.status en la Entrada para obtener más información.

Como resultado de esta regla, los valores especificados para Nombre, ID y Estado los campos se validan, en cuanto se cambia el campo definido en el paso 2 y se elimina el campo del formulario mediante tabulación.

  1. Select Editor de código en la lista desplegable selección de modo.

  2. Toque Editar código.

  3. Elimine la línea siguiente del código existente:

    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
    
  4. Escriba una regla para convertir la estructura de error personalizada a la estructura de error estándar y pulse Listo para guardar la regla.
    Por ejemplo, agregue el siguiente código de ejemplo al final para convertir una estructura de error personalizada en la estructura de error estándar:

    var errorHandler = function(jqXHR, data) {
    var som_map = {
        "id": "guide[0].guide1[0].guideRootPanel[0].Pet[0].id_1[0]",
        "name": "guide[0].guide1[0].guideRootPanel[0].Pet[0].name_2[0]",
        "status": "guide[0].guide1[0].guideRootPanel[0].Pet[0].status[0]"
    };
    
    
    var errorJson = {};
    errorJson.errors = [];
    
    if (data) {
        if (data.originMessage) {
            var errorData;
            try {
                errorData = JSON.parse(data.originMessage);
            } catch (err) {
                // not in json format
            }
    
            if (errorData) {
                Object.keys(errorData).forEach(function(key) {
                    var som_key = som_map[key];
                    if (som_key) {
                        var error = {};
                        error.somExpression = som_key;
                        error.errorMessage = errorData[key];
                        errorJson.errors.push(error);
                    }
                });
            }
            window.guideBridge.handleServerValidationError(errorJson);
        } else {
            window.guideBridge.handleServerValidationError(data);
        }
      }
    };
    
    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
    

    La variable var som_map enumera la expresión SOM de los campos de formulario adaptables que desea transformar en el formato estándar. Puede ver la expresión SOM de cualquier campo en un formulario adaptable; para ello, pulse el campo y seleccione Ver expresión SOM from Más opciones (…).

    Asegúrese de copiar la línea siguiente del código de ejemplo en el controlador de error personalizado:

    guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
    

    La API executeOperation incluye el null y errorHandler parámetros basados en el nuevo controlador de error personalizado.

    Con este controlador de error personalizado, el formulario adaptable convierte los campos enumerados en var som_map al formato de mensaje de error estándar. Como resultado, los mensajes de error de validación se muestran a nivel de campo en el formulario adaptable.

En esta página