2011-03-05 18 views
6

Tengo algunos problemas cuando trato de validar la entrada del usuario de mi JSF, en un beans administrado. Recibo el mensaje de validación en la consola, pero no lo veo en la página. No entiendo dónde está el problema.Validación de entrada de usuario en el problema de bean administrado (JSF 2.0)

Esta es la salida de la consola:

INFORMACIÓN: Dentro método de validación !! INFORMACIÓN: ¡NO HAY PARTIDO! INFORMACIÓN: instancia una instancia de org.hibernate.validator.engine.resolver.JPATraversableResolver. INFORMACIÓN: ADVERTENCIA: FacesMessage (s) se han puesto en cola, pero es posible que no se hayan visualizado. sourceid = bRegForm: Nombre [severidad = (INFO 0), resumen = (Su nombre no puede contener caracteres especiales), detalle = (Su nombre no puede contener caracteres especiales)]

Ésta es la forma en que hice la entrada de JSF componente:

<h:inputText id="name" value="#{registrationController.name}" validator="#{registrationController.validateName}" required="true"> 
     <h:message for="name"/> 
    </h:inputText> 

Y esta es la forma en cómo creé el método de validación:

@ManagedBean 
@RequestScoped 
public class RegistrationController { 
... 
public void validateName(FacesContext context, UIComponent validate, 
     Object value) { 
    String inputFromField = (String) value; 
    String simpleTextPatternText = "^[a-zA-Z0-9]+$"; 
    Pattern textPattern = null; 
    Matcher nameMatcher = null; 
    textPattern = Pattern.compile(simpleTextPatternText); 
    nameMatcher = textPattern.matcher(inputFromField); 
    System.out.println("Inside validation method!!"); 
    if (!nameMatcher.matches()) { 
     System.out.println("NO MATCH!!!"); 
     FacesMessage msg = new FacesMessage(
       Your name cannot contain special characters); 
     throw new ValidatorException(msg); 
    } 
} 

Como ves me las arreglo para conseguir dentro del método de validación cuando intento entradas que contienen carbón especial actúa como: G #^r $> ', ... y veo el mensaje de que hay consejos al respecto en la consola, pero no veo el mensaje en la página, al lado del campo de entrada. Por cierto: también noté que cuando doy entrada vacía, no veo ningún mensaje de validación y lo hice obligatorio = "verdadero". Comprobé el registro de errores y también la consola, pero no encuentro ninguna excepción que pueda darme pistas (solo el mensaje de ADVERTENCIA que copio pegado arriba). Soy principiante con JSF 2.0 Es el tercer día que tengo este problema, no sé cómo resolverlo. ¿Debo configurar cualquier XML? ¿Debo implementar alguna interfaz? ¿Anular cualquier método? ... Seré muy feliz si alguien pudiera echarle un vistazo y echarme una mano. De antemano muchas gracias por su tiempo de lectura.

Respuesta

5

El <h:message> no debe estar anidado dentro de <h:inputText>. Póngalos uno al lado del otro.

+0

Amigo de BalusC, muchas gracias. Finalmente solucioné el problema :) Ese fue el atributo de atributo que se encarga de vincular el componente al mensaje. Entonces, en mi caso, el mensaje no necesitaba ser anidado. También observo que eclipse ahora muestra un pequeño sobre al lado de ese campo para avisar que tiene un mensaje de validación. Finalmente :) tnx nuevamente. – sfrj

+0

De nada. – BalusC

Cuestiones relacionadas