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

PRECAUCIÓN

AEM 6.4 ha llegado al final de la compatibilidad ampliada y esta documentación ya no se actualiza. Para obtener más información, consulte nuestra períodos de asistencia técnica. Buscar las versiones compatibles here.

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 a la fuente de datos. De lo contrario, el formulario adaptable mostrará 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 mediante cualquiera de los dos siguientes métodos:

  • Agregar un 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

Configurar el 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.

Configurar el envío asincrónico de formularios adaptables

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

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

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

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

  4. Seleccione la acción de envío:

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

    propiedades de envío del formulario adaptable

  5. Pulse Guardar para guardar las propiedades.

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

AEM Forms proporciona controladores de éxito y de error predeterminados 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 el modo de creación, seleccione cualquier objeto del formulario y pulse para abrir el editor de reglas.
  2. Seleccione Formulario en el árbol Objetos de formulario y pulse Crear.
  3. Seleccione 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);
    }
}

El 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.

Agregar un controlador personalizado mediante la acción Invocar servicio

Ejecute los siguientes pasos para agregar el controlador de error para convertir una estructura de error personalizada en la estructura de error estándar mediante la acción Invocar servicio del Editor de reglas.

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

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

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

  2. Pulse 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);
    

    El 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 del menú Más opciones (…).

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

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

    La API executeOperation incluye los parámetros null y errorHandler 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