2009-04-15 2 views
0

ich benutze a4j für die Überprüfung Benutzername existiert oder nicht für onblur Ereignis es zeigt die Fehlermeldungen wenn Benutzer bereits existiert aber, wenn ich auf Schaltfläche absenden nach der Anzeige der Fehlermeldung klicken wird vorgelegt, wenn es um die erforderliche = true für kommt es nicht inputFormular wird gesendet auch A4j Validierung schlägt fehl + jsf

required = "true" Validator = "# {RegistrationBean.checkFirstName}">

public void checkFir vorgelegt bekommt stName (Facesfaces, UIComponent Komponente, Objektwert)
{

String name = (String) value; 

    if(name.trim().length()==0){ 
     System.out.println("Name *******"); 

     String message = bundle.getString("Name_Required"); 
     FacesContext.getCurrentInstance().addMessage("Reg:firstName", 
       new FacesMessage(FacesMessage.SEVERITY_ERROR, message,message));     


    }     
    if(name.trim().equalsIgnoreCase("tom")){ 

     String message = bundle.getString("Name_exists"); 
     FacesContext.getCurrentInstance().addMessage("Reg:firstName", 
       new FacesMessage(FacesMessage.SEVERITY_ERROR, message,message));     

    } 

    } 

könnte mir jemand empfehlen, wo ich schief gelaufen

Antwort

3

Mit dem JSF-Code, wäre es einfacher, Ihnen zu helfen. Deshalb schlage ich vor, dass Sie so etwas in Ihrer JSF-Seite haben:

<h:inputText id="firstName" ... validator="#{aBean.checkFirstName}"> 

Das Problem auf dem Java-Code ist, dass Sie keine ValidatorException werfen, wenn ein Fehler auftritt. So muss Ihr Code sein:

public void checkFirstName(FacesContext facesContext, UIComponent component, Object value) { 
    String name = (String) value; 
    if ((name == null) || name.trim().length() == 0) { 
     System.out.println("Name *******"); 
     String message = bundle.getString("Name_Required"); 
     throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message)); // Throw the required error 
    } 
    if (name.trim().equalsIgnoreCase("tom")) { 
     String message = bundle.getString("Name_exists"); 
     throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message)); // Throw the already exist error 
    } 
} 

diese Weise, wenn die in diesem Bereich gefüllt Wert leer ist oder bereits vorhanden ist, wird ein ValidatorException geworfen werden, wird der Benutzer eine Fehlermeldung (nicht hinzuzufügen vergessen die <h:messages/> oder Komponente in Ihrem Formular), und das Formular wird nicht eingereicht!

+0

danke für Ihre Unterstützung mein Problem ist gelöst –

+1

Wenn Ihr Problem gelöst ist, wählen Sie bitte meine Antwort als die richtige Antwort (wenn es der Fall ist) (klicken Sie auf das Symbol unter der 0 auf der linken Seite) – romaintaz