2016-11-11 5 views
0

クリックされたボタンに応じていくつかの検証を行う必要がありますが、そのボタンを検証メソッド内でBean内に取得する方法が見つかりません。私がボタンを得ることができれば、おそらく内部の定義された属性と比較することができます。だから、これは私が得るものです:Bean検証メソッドでlaucherボタンを取得する方法

<af:button id="btnSearch"> 
    <f:attribute name="action" value="search"/> 
</af:button> 

<af:inputText id="itSearch" validator="#{pageFlowScope.mbCustom.customValidation}"> 
</af:inputText> 

Beanでは:

public void customValidation(FacesContext facesContext, UIComponent uIComponent, Object object) { 
    UIComponent button = //button that trigger the validation 
    String validationError = ""; 
    if("search".equals(button.getAttributes().get("action")){ 
     validationError ="Validation Button1"; 
    }else if("other".equals(button.getAttributes().get("action")){ 
     validationError ="Validation Button2"; 
    } 
    throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, 
                validationError, 
                null)); 

} 

任意の助けが理解されるであろう。

答えて

1

どのボタンがクリックされたかを知りたいのですか?アクションはこれをあなたに伝えません。アクションはナビゲーションのみに使用する必要があります。 ActionListenerイベントを使用する必要があり、メソッドに返されたActionListener Eventオブジェクトにはイベントを開始したコンポーネントオブジェクトがあります。クリック可能な各ボタンのActionListenerイベントがあり、呼び出されるメソッドでは、クリックされたボタンのコンポーネントIDを設定するだけです。

+0

ありがとう、私はそれをチェックするつもりです。私がしようとしているのは、ページ内のすべてのバリデーションに対してコンポーネントバリデーターを使用することです。アクションをトリガーするボタンをメソッド内で知ることが唯一の方法です。なぜなら、クリックした人によってバリデーションが異なるからです。 – abdiel

関連する問題