1136
Capítulo 26 Aplicaciones Web: parte 1
418
419
// si el número telefónico introducido no está en un formato válido
420
if
( !telefono.matches(
421
"((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}"
) )
422
{
423
throw new
ValidatorException(
new
FacesMessage(
424
"Escriba un telefono valido; ejemplo: (555) 555-1234"
) );
425
}
// fin de if
426
}
// fin del método ctextoTelefono_validate
427
428
// muestra las entradas del formulario validadas en un Panel de cuadrícula
429
public String
botonEnviar_action()
430
{
431
String nombre = String.valueOf( ctextoNombre.getValue() );
432
String email = String.valueOf( ctextoEmail.getValue() );
433
String telefono = String.valueOf( ctextoTelefono.getValue() );
434
resultadoNombre.setValue( nombre );
435
resultadoEmail.setValue( email );
436
resultadoTelefono.setValue( telefono );
437
panelCuadricula.setRendered(
true
);
438
textoResultado.setRendered(
true
);
439
return null
;
440
}
// fin del método botonEnviar_accion
441
}
// fin de la clase Validacion
Figura 26.19
| Bean de página para validar la entrada del usuario y volver a mostrar esa entrada, si es válida.
(Parte 3 de 3).
Para el método
ctextoEmail_validate
, usamos la siguiente expresión de validación:
\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*
Observe que cada barra diagonal inversa en la expresión regular
String
(línea 405) se debe escapar con otra barra
diagonal inversa (como en
\\
), ya que el carácter de barra diagonal inversa normalmente representa el inicio de
una secuencia de escape. Esta expresión regular indica que una dirección de e-mail es válida si la parte antes del
símbolo
@
contiene uno o más caracteres de palabra (es decir, caracteres alfanuméricos o de guión bajo), seguidos
de uno o más objetos
String
compuestos de un guión corto, signo más, punto o apóstrofo (
'
) y de más caracteres de
palabra. Después del símbolo
@,
una dirección de e-mail válida debe contener uno o más grupos de caracteres
de palabras, que pueden estar separados por guiones cortos o puntos, seguidos de un punto requerido y de
otro grupo de uno o más caracteres, que pueden estar separados por guiones cortos o puntos. Por ejemplo, las
direcciones de e-mail
bob’s-personal.email@white.email.com
,
bob-white@my-email.com
y
bob.white@
email.com
son todas válidas. Si el usuario escribe texto en
ctextoEmail
que no tenga el formato correcto y trata
de enviar el formulario, en las líneas 407 y 408 se lanza una excepción
ValidatorException
. El componente
mensajeEmail
atrapará esta excepción y mostrará el mensaje en color rojo.
La expresión regular en
ctextoTelefono_validate
asegura que el componente
ctextoTelefono
contenga
un número telefónico válido antes de enviar el formulario. La entrada del usuario se compara con la expresión
regular
((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}
(De nuevo, cada barra diagonal inversa se escapa en la expresión regular
String
de la línea 421). Esta expresión
indica que un número telefónico puede contener un código de área de tres dígitos, ya sea entre paréntesis o no, y
debe ir seguido de un espacio opcional, o sin paréntesis y seguido por un guión corto obligatorio. Después de un
código de área opcional, un número telefónico debe contener tres dígitos, un guión corto y otros cuatro dígitos.
Por ejemplo,
(555)123-4567,555-123-4567
y
123-4567
son todos números telefónicos válidos. Si un usuario
escribe un número telefónico inválido, en las líneas 423 y 424 se lanza una excepción
ValidatorException
. El
componente
mensajeTelefono
atrapa esta excepción y muestra el mensaje de error en color rojo.
26_MAQ_CAP_26_Deitel.indd1136
5/8/084:15:35PM