Saltar al contenido principal
Version: Next (5.0)

Validación

La acción de validación comprueba las condiciones de cada criterio con un valor en el atributo validation. Esta acción está relacionada con un botón de tipo validate (consulta acciones de botón).

ValidateImage

Esqueleto de XML​

<criteria [attributes] validation="[condition to validate]" />

Tipos de validación​

Hay varios tipos de validación:

Valor del atributoComponenteDescripciónEjemplos
requiredTodos excepto checkbox y radioComprueba si el campo tiene valorvalidation="{required:true}"
textText / Textarea / PasswordComprueba si el valor del criterio es un texto (no se permiten números ni espacios en blanco)validation="{text:true}"
textWithSpacesText / Textarea / PasswordComprueba si el valor del criterio es un texto (no se permiten números)validation="{textWithSpaces:true}"
numberText / Textarea / PasswordComprueba si el valor del criterio es un númerovalidation="number"
integerText / Textarea / PasswordComprueba si el valor es un entero bien formadovalidation="integer"
digitsText / Textarea / PasswordComprueba si el valor es un número con solo dígitosvalidation="digits"
dateText / Textarea / PasswordComprueba si el valor es una fecha válidavalidation="date"
timeText / Textarea / PasswordComprueba si el valor es una hora válida (hora, minutos y segundos)validation="time"
emailText / Textarea / PasswordComprueba si el valor es una cadena de correo electrónico válidavalidation="email"
gtTodos excepto checkbox y radioComprueba si el valor del criterio es mayor que valuevalidation="{gt:value}"
geTodos excepto checkbox y radioComprueba si el valor del criterio es mayor o igual que valuevalidation="{ge:value}"
ltTodos excepto checkbox y radioComprueba si el valor del criterio es menor que valuevalidation="{lt:value}"
leTodos excepto checkbox y radioComprueba si el valor del criterio es menor o igual que valuevalidation="{le:value}"
eqTodos excepto checkbox y radioComprueba si el valor del criterio es igual a valuevalidation="{eq:value}"
neTodos excepto checkbox y radioComprueba si el valor del criterio es distinto de valuevalidation="{ne:value}"
modNumeric / Date / TimeComprueba si el valor del criterio es divisible por valuevalidation="{mod:value}"
rangeNumeric / Date / TimeComprueba si el valor está dentro del rangovalidation="{range:{from:value, to:value}}"
equallengthText / Textarea / PasswordComprueba si la longitud del texto es igual a valuevalidation="{equallength:value}"
maxlengthText / Textarea / PasswordComprueba si la longitud del texto es menor que valuevalidation="{maxlength:value}"
minlengthText / Textarea / PasswordComprueba si la longitud del texto es mayor que valuevalidation="{minlength:value}"
checkAtLeastCheckbox / Button checkboxAsegura que haya al menos value casillas marcadas en el grupovalidation="{checkAtLeast:value}"
maxRepeatGrid columnsComprueba que el valor de la celda no se repite más de value veces en su columna del grid (la propia celda cuenta como una). Como en AngularJS: los valores se comparan de forma estricta (1 no es "1"), los valores vacíos cuentan y las celdas múltiples (arrays) nunca se marcan. Un value vacío omite la regla y uno no numérico marca todos los valores. Solo se vuelve a comprobar la celda editada: las demás filas mantienen su estado hasta que se editan o se valida el formulariovalidation="{maxRepeat:value}"
patternText / Textarea / PasswordComprueba si el texto es igual al parámetrovalidation="{pattern:value}"

Valores de validación​

Puedes asignar un valor estático simple al comparador de validación:

{eq:3}

... o puedes tomar el valor de un ajuste (setting) o de un criterio:

{eq:{criterion:"CriterionId",type:"date"}}

Estos son los posibles atributos de un comparador de valor:

Valor del atributoDescripciónEjemplos
valueValor constante con el que compararvalue:5
criterionObtiene el valor de un criteriocriterion:"CriterionId"
settingObtiene el valor de un ajuste (setting)setting:"minlengthPassword"
messageLocale del mensaje a obtener si no se supera la validaciónmessage:"VALIDATION_MESSAGE_CUSTOM_ERROR"
typeTipo de comparacióntype:"type"

Tipos de comparación​

Puedes definir el tipo de la comparación, para comprobar los valores como un tipo definido:

TipoDescripción
dateCompara como fechas
integerCompara como enteros
floatCompara como números decimales
stringCompara como cadenas (por defecto)

Validación múltiple​

Es posible tener más de una acción de validación en un único atributo validation. Para ello, es necesario insertar las validaciones en formato json:

{eq:{criterion:"Field1"},ne:{criterion:"Field2"}}

Hay una excepción con las reglas de validación simples que no tienen parámetros, como required. En este caso, no es necesario poner la regla entre llaves {}:

validation="required"

Si quieres combinar reglas simples con reglas complejas, debes definirla también como una regla compleja:

{required:true, maxlength:{value:6, type:"integer"}}

Campos en contenido oculto​

Un criterio puede estar en contenido que el usuario no ve: una pestaña que no es la activa, un paso de un asistente que no es el actual o un elemento de acordeón que está contraído. Cuando falla una acción validate, ambos clientes (AngularJS y React) validan todos los criterios de la pantalla, estén ocultos o no, y después muestran el primero que no es válido:

  1. Se abren las pestañas, los pasos de asistente y los elementos de acordeón que ocultan el campo, del contenedor exterior al interior. Un contenedor que ya muestra el campo se deja como está, y un acordeón que permite varios elementos abiertos mantiene abiertos los demás.
  2. Se da el foco al campo y se desplaza hasta que queda a la vista.
  3. La cabecera de pestaña, el paso de asistente y el elemento de acordeón que contienen campos no válidos se marcan con un indicador de error (un título en rojo con un signo de exclamación, y un número en rojo en un paso de asistente). La marca desaparece cuando se corrigen los campos.

El primer campo no válido es el primero según el orden de la definición de la pantalla. Las pantallas sin contenido oculto siguen funcionando como antes: el mensaje de error se muestra junto al campo.

Para las pruebas automatizadas, la pestaña, el paso o el elemento marcado lleva el atributo data-invalid="true" (y "false" en caso contrario), junto a data-active y data-completed. La pantalla de prueba reveal-invalid de las aplicaciones de prueba tiene un campo obligatorio en una segunda pestaña, en un elemento de acordeón contraído y en el segundo paso de un asistente.

Ejemplos​

Criterios estándar con acción de validación​

<criteria label="PARAMETER_TEXT" id="TxtReq" variable="TxtReq" component="text" style="col-xs-6 col-sm-3 col-lg-2" validation="{required:true, maxlength:4}"/>

Comprobar que la contraseña es válida​

<criteria label="PARAMETER_PASSWD" id="Pas" component="text"
validation="{required: true, pattern:{setting:'passwordPattern'}, ne:{criterion:'OldPas', message:'VALIDATOR_MESSAGE_REPEAT_OLD_PASSWORD'}, minlength:{setting:'minlengthPassword'}}"
style="col2" />

Comprobar si una fecha es mayor o igual que otra​

<criteria label="PARAMETER_FILTERED_DATE" id="FilCalReq" variable="FilCalReq" component="filtered-calendar" initial-load="query"
target-action="FilCalDat" style="col-xs-6 col-sm-3 col-lg-2" validation="{required:true,ge:{criterion:'FilCal',type:'date'}}" strict="false" />