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:
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.
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 errorerrors
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ónoriginCode
contiene el código de error devuelto por el servicio externooriginMessage
contiene los datos de error sin procesar devueltos por el servicio externoSi 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.
Antes de agregar el controlador personalizado, debe configurar el formulario adaptable para el envío asincrónico. Siga estos pasos:
En el modo de creación del formulario adaptable, seleccione el objeto Contenedor del formulario y pulse para abrir sus propiedades.
En la sección de propiedades de Envío, habilite Usar envío asincrónico.
Seleccione Revalidar en el servidor para validar los valores de los campos de entrada en el servidor antes del envío.
Seleccione la acción de envío:
Pulse para guardar las propiedades.
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:
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.
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.
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.
Seleccione Editor de código de la lista desplegable selección de modo.
Pulse Editar código.
Elimine la línea siguiente del código existente:
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
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.