はい、デモンストレーションの目的で、ほとんどの例には静的データがロードされています。しかし、PFショーケースで同じ例を見ると、2番目のリストボックスコードは次のようになります。
<h:outputText value="Scrollbar: " />
<p:selectOneListbox id="scroll" value="#{autoCompleteBean.selectedPlayer1}"
converter="player" style="height:100px">
<f:selectItems value="#{autoCompleteBean.players}"
var="player" itemLabel="#{player.name}" itemValue="#{player}" />
</p:selectOneListbox>
f:selectItems value属性は、コレクション、配列、マップ、またはSelectItemインスタンスを指すことができます。したがって、上記の例のプレーヤーは、マネージドBeanのデータベースを使用して入力されている任意のリストである可能性があります。
ただし、インスタンスがSelectItemでない場合、ラベルは各オブジェクトでtoStringを呼び出すことによって取得され、最後に選択されたitemValueがselectedPlayer1属性に設定されますが、間にコンバーターがあるため、着信itemValue文字列が変換されます。プレーヤーオブジェクトに戻り、selectedPlayer1に設定します。
また、選択したアイテムをテキスト領域に表示する場合は、次のようにすることができます。
<h:outputText value="Scrollbar: " />
<p:selectOneListbox id="scroll" value="#{autoCompleteBean.selectedPlayer1}"
converter="player" style="height:100px">
<f:selectItems value="#{autoCompleteBean.players}"
var="player" itemLabel="#{player.name}" itemValue="#{player}" />
<p:ajax update="displayArea"/>
</p:selectOneListbox>
<p:inputTextarea id="displayArea" value="#{autoCompleteBean.selectedPlayer1}" />
ここで、inputTextareaは、ユーザーが選択した値でajaxを使用して更新されます。