2009-04-15 8 views
0

사용자 확인을 위해 a4j를 사용하고 있습니다. onblur 이벤트에 대해서 사용자가 이미 존재하면 오류 메시지가 표시되지만, 오류 메시지를 표시 한 후 버튼을 클릭하면 그것은이 양식이 A4j 유효성 검사에도 실패했습니다. + jsf

필요 = "true"를 검증 = "# {RegistrationBean.checkFirstName}">

공공 무효 checkFir 제출되지 않습니다 InputText]를 위해 필요한 = true로 올 때 를 제출됩니다 stName (FacesContext facesContext UIComponent를 구성 요소, 개체 값)
{내가 JSF 코드로

답변

3

잘못된 곳

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

    } 

    } 

사람이 저를 제안 할 수, 당신을 도울하는 것이 더 쉽습니다. 그래서 나는 당신이 당신의 JSF 페이지에 그런 일을하는 것이 좋습니다 :

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

자바 코드에 문제 것은 오류가 발생하면 어떤 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

내 문제가 해결되었습니다 –

+1

문제가 해결되면 올바른 대답으로 내 대답을 선택하십시오 (해당되는 경우) (왼쪽의 0 아래 아이콘을 클릭하십시오) – romaintaz