2017-11-15 8 views
1

からPrimefacesオートコンプリートを埋めるために。は、どのように私は以下のようになりprimefacesオートコンプリートを持っているマネージドBean

私の問題は、ページを読み込んでデータを更新するときです。私のidUaSelecionadaは既に埋め込まれていて、提案として渡す準備ができているオブジェクトです(これは唯一の要素のリストです)。このオートコンプリートを埋め込む方法を見つけることができませんでした。少なくともテキストコンポーネントです。

オートコンプリートソースコードを読むと、suggestionsというリストがあることが分かりました。このリストにはセッターはありませんが、ゲッターがあります。しかし、私がautocomplete.getSuggestions().add(...)のようなものを試してみると、NullPointerExceptionが得られます。このリストを埋めるために見つけた唯一の方法は、completeMethodタグ属性で示されたメソッドを使用することです。これはStringを受け取り、Listを返します。

インターネットでこのリストの記入方法を見つけることができませんでした。だからこそ私は誰にも答えがあるかどうかを確認することを求めている。

おかげで、

ラファエル・アフォンソ

+0

'setSuggetions(...) 'を使って試してみましたか? – Kukeltje

+0

提案の設定者はありません。 https://www.primefaces.org/docs/api/5.2/org/primefaces/component/autocomplete/AutoComplete.html –

答えて

1

あなたはcompleteMethodタグ属性と負荷の提案(S)で定義されたメソッドの実行をトリガするためにJavaScriptを使用することができます。

ページのロードが、あなたのページにこのスクリプトを追加したときにそれを行う、あなたの提案のリストを更新し、p:autocompleteに提案をロードするたび

<script> 
    function triggerSuggestionLoading() { 
      //finds autocomplete input text field 
      var autocomplete = document.getElementsByClassName('ui-autocomplete-input')[0]; 

      //sets autocomplete query, for example 
      autocomplete.value="test"; 

      //simulates key press triggering completeMethod to be executed 
      autocomplete.dispatchEvent(new Event('keydown')); 
      autocomplete.dispatchEvent(new Event('input')); 
      autocomplete.dispatchEvent(new Event('keyup')); 

      //sets focus on autocomplete 
      autocomplete.dispatchEvent(new Event('focus')); 

      //clears autocomplete text 
      autocomplete.value=""; 
    } 

    window.onload = function() { 
     triggerSuggestionLoading(); 
    }; 
</script> 

実際には(最後にtriggerSuggestionLoading()メソッドを呼び出したいと仮定するとすべての手続きが完了した後)。

私はChromeとEdgeでテストしました。

+0

ご回答ありがとうございます。このオートコンプリートでアプローチを変更しましたので、私はあなたのアドバイスを使用しません。しかし、とにかく、それが他の誰にとっても役立つことを願っています。 –

関連する問題