是的,出于演示目的,大多数示例都加载了静态数据。但是如果你在 PF Showcase 上查看相同的示例,第二个列表框代码如下:
<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 值属性可以指向一个集合、一个数组、一个映射或一个 SelectItem 实例。因此,上面的示例播放器可以是使用托管 bean 中的数据库填充的任何列表。
但是如果实例不是 SelectItem,则通过在每个对象上调用 toString 来获取标签,最后将 selected 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 更新,其值由用户选择。