圖3和圖4顯示了運行中的自動完成字段。在圖3中,在字段中輸入Al之後,國家列表將縮減至使用這兩個字母開頭的名稱:
圖3.使用Al開頭的完成項目
同樣,圖4顯示了在字段中輸入Bar之後顯示的結果。列表僅顯示以Bar開頭的國家名。
圖4.以Bar開頭的完成項目
使用自動完成組件
復合組件:基礎如果您不熟悉如何實現JSF2復合組件,那麼您可以從“JSF2簡介,第2部分:模板及復合組件”這篇文章中了解基本知識。
.Locations自動完成字段是一個JSF復合組件,並應用於facelet,如清單1所示:
清單1.facelet
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
- <Html XMLns="http://www.w3.org/1999/xHtml"
- XMLns:h="http://Java.sun.com/JSf/Html"
- XMLns:util="http://Java.sun.com/JSf/composite/util">
- <h:head>
- <title>#{msgs.autoCompleteWindowTitle}</title>
- </h:head>
- <h:body>
- <div style="padding: 20px;">
- <h:form>
- <h:panelGrid columns="2">
- #{msgs.locationsPrompt}
- <util:autoComplete value="#{user.country}"
- completionItems="#{autoComplete.countrIEs}" />
- </h:panelGrid>
- </h:form>
- </div>
- </h:body>
- </Html>
清單1中的facelet通過聲明適當的名稱空間—util—以及借助組件的相關標記(<util:autoComplete>)來使用autoComplete復合組件。
注意清單1中<util:autoComplete>標記的兩個屬性:
•value是名稱為user的托管bean的國家屬性。
•completionItems是字段的完成項目的初始集。
User類是一個簡單的托管bean,專為本例而設計。其代碼如清單2所示: