2009-04-15 17 views
0

a4jを使ってユーザ名を確認しているかどうかを確認するには エラーメッセージが表示されているときにエラーメッセージが表示されますが、エラーメッセージを表示したあと それはそれは A4Jの検証でもフォームが送信されない+ jsf

必要= "true" のバリデータ= "#{RegistrationBean.checkFirstName}">

ます。public void checkFirを提出されないのinputTextに必要= trueに来るとき を提出します私は、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));     

    } 

    } 

stName(のFacesContextのFacesContext、UIComponentですコンポーネント、オブジェクトの値が)誰も私を提案することができ、あなたを助けるために容易になるだろう。だから私は、あなたの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

私の問題は解決されました –

+1

問題が解決した場合は、正しい答えとして私の答えを選択してください(その場合は、左側の0のアイコンをクリックしてください) – romaintaz