2016-04-22 2 views
0

バリデーターでオートコンプリートを取得しました。オートコンプリートに「AAA」のクエリを提出すると、「AAA」で始まる提案のリストが表示されます。私は 'AAA001'を選択し、次にバリデーターが呼び出されますが、バリデーターでは 'AAA001'と予想されます。ここでPrimefaces AutoCompleteバリデーターが間違った値を検証しています

は私のコードです:

<p:autoComplete id="codeAutoComplete" 
    completeMethod="#{BEAN.autoCompleteCode}" 
    minQueryLength="3" forceSelection="true" 
    value="#{OBJECT.code}" 
    validator="#{BEAN.validateCode}" > 
    <f:attribute name="object" value="#{OBJECT}" /> 
    <p:ajax listener="#{BEAN.onCodeSelect}" 
     update="form"/> 
</p:autoComplete> 

コードは単純にゲッターとセッターと私のバリデータを持つ文字列です:

public void validateCode(FacesContext ctx, UIComponent component, Object value) { 
    String code = (String) value; 
    ... 
} 

、即座コード=「AAA」のではなく、予想される「AAA001 ' 「AAA001」がオブジェクトにまだ設定されていないことを保証するためにオブジェクト属性を追加しましたが、期待通りにはできませんでした。

提出された値ではなく、選択した値を取得するためにできることはありますか?

おかげ

答えて

1

(Primefacesドキュメントごとなど)オートコンプリート検証関数 - 入力を検証する方法を参照するメソッド式。

"Validator"に渡すオブジェクトは、指定された値ではなく、挿入された値を検証します。この関数は、提供されたコードごとに他の関数より先に完了します。

IMAGE - A quick drawing explaining the validator's purpose

に並置として、これは、選択した値のオブジェクトに適用されるように私はむしろ、あなたがあなたの代わりに「BEAN.onSelect」リスナーに「AAA001」のため適用するロジックを移動することをお勧めしたいです挿入された値オブジェクト(それに応じてイベントを設定する必要があります)

私はこの問題の解決に役立つことを願っています。運が良かった!

関連する問題