我正在使用带有itemtip选项的primefaces自动完成组件, 在得到建议后,我选择一个值作为示例姓氏, 但是我想在文本框中显示播放器的姓氏和名字,所以尝试了这种方式。
itemLabel="#{p.lastName} #{p.firstName} "
与这两个人有一些空间。
<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>
所以在选择建议后,它会完美地显示玩家的姓氏和名字。 但是创建了一个问题 - 它在自动完成文本框中创建了一个空间,所以我需要使用 退格以删除此空间,以便我可以搜索获取建议。 我怎样才能克服这个问题?
3.当我用于无案例敏感输入时,用户可以在不区分大小写的情况下进行搜索, 一旦我得到任何建议,仍然尝试输入一些关键字进行进一步的过滤, 建议消失,如果我以默认方式使用区分大小写,它会起作用。
用户可以输入玩家的姓氏或名字,但仍然需要得到建议,我需要在以下方法中做些什么修改? 我已将姓氏与First字母一起存储为Capital,因此我以这种方式使用toUpperCase()
public List completePlayer(String query){
列表建议= new ArrayList();
for(Player p : players) {
if(p.getlastName().startsWith(query.toUpperCase()))
suggestions.add(p);
}
return suggestions;
}
我如何克服这个问题?
答案 0 :(得分:1)
你的玩家比较正在解决这个问题:
Smith.startsWith(“S”) - &gt;真正
Smith.startsWith(“SM”) - &gt;假
你想要的是:
if(p.getlastName().toUpperCase().startsWith(query.toUpperCase()))
自动填充中的空间来自此行:
itemLabel="#{p.lastName} #{p.firstName} " itemValue="#{p}" converter="player">
在结束报价之前,itemLabel中的#{p.firstName}后面有一个空格。
至于水印,我不知道。我从来没有尝试过自动完成功能。你可以加入你的p:watermark标签,这样我们就可以看到它所引用的内容了吗?