提案を取得した後、itemtipオプションでprimefacesオートコンプリートコンポーネントを使用していますが、姓の例として1つの値を選択していますが、プレーヤーの姓と名の両方をテキストボックスに表示したいので、この方法で試しました。
itemLabel="#{p.lastName} #{p.firstName} "
この 2 つにある程度のスペースがあります。
<p:autoComplete id="watermark" value="#{backingBean.object}"
size="40" completeMethod="#{backingBean.completeholder}"
var="p"
itemLabel="#{p.lastName} #{p.firstName} " itemValue="#{p}" converter="player">
<f:facet name="itemtip">
<h:panelGrid columns="2" styleClass="cellsp-panel">
<f:facet name="header">
<p:graphicImage value="#{p.imagePath}" width="60"
height="60" />
</f:facet>
<h:outputText value="LastName " style="font-weight:bold" />
<h:outputText id="ln" value="#{p.lastName}" />
<h:outputText value="FirstName " style="font-weight:bold" />
<h:outputText id="fn" value="#{p.firstName}" />
</h:panelGrid>
</f:facet>
<p:ajax event="itemSelect" update="e,c">
</p:ajax>
</p:autoComplete>
そのため、提案を選択すると、プレーヤーの姓と名が完全に表示されます。しかし、1 つの問題が作成されます。オートコンプリート テキスト ボックスにスペースが作成されるため、バックスペースを使用してこのスペースを削除し、提案を取得するために検索できるようにする必要があります。どうすればこの問題を克服できますか?
- また、オートコンプリートで透かしを使用しています。 itemLabel="#{p.lastName} のような単一の itemLabel を使用する場合にのみ機能します。それ以外の場合は、オートコンプリートで透かしを表示できません。
3.また、ユーザーが大文字と小文字を区別せずに検索できるように、大文字と小文字を区別しない入力に使用すると、提案が表示されても、さらにフィルタリングするためにいくつかのキーワークを入力しようとすると、提案が消えます。デフォルトの方法。
ユーザーはプレーヤーの姓または名を入力できますが、それでも提案を得る必要があります。次の方法でどのような変更を行う必要がありますか? 最初の文字を大文字にして姓を保存したので、このように toUpperCase() を使用しています
public List completePlayer(String query) {
リスト候補 = new ArrayList();for(Player p : players) { if(p.getlastName().startsWith(query.toUpperCase())) suggestions.add(p); } return suggestions; }
どうすればこの問題を克服できますか?