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