2009-04-15 2 views
0

Я использую a4j для проверки того, что имя пользователя существует или нет для события onblur отображает сообщения об ошибках, когда пользователь уже существует, но если я нажму кнопку отправить сообщение после отображения сообщения об ошибке получает представляется , когда дело доходит до требуемого = верно для inputtext он не получает представленногоПолучение формы даже с ошибкой A4j не удается + jsf

требуется = "истинный" валидатор = "# {RegistrationBean.checkFirstName}">

общественная недействительная checkFir stName (FacesContext FacesContext, UIComponent компонент, значение Object)
{

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));     

    } 

    } 

может кто-нибудь предложить мне, где я пошло не так

ответ

3

С кодом JSF, было бы легче, чтобы помочь вам. Таким образом, я полагаю, что у вас есть что-то подобное в вашей странице JSF:

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

Проблема в коде Java является то, что вы не бросайте ValidatorException при возникновении ошибки. Таким образом, ваш код должен быть:

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 
    } 
} 

Таким образом, если значение заполняется в этом поле пусто или уже существует, ValidatorException будет выброшен, пользователь получит сообщение об ошибке (не забудьте добавить <h:messages/> или <h:message/> компонента в вашей форме), и форма не будет отправлена!

+0

Спасибо за поддержку. Моя проблема решена. – 2009-04-16 06:20:15

+1

Если ваша проблема решена, выберите мой ответ в качестве правильного ответа (если это так) (нажмите на значок ниже 0 слева) – romaintaz

Смежные вопросы