我有一个名为myPerson
. 它包含很多属性,还有两个名字属性: firstname
,lastname
我想使用自动完成myPerson
从数据库中选择对象。用户应该能够输入名字或姓氏,并且它应该以输入数据作为他们的名字或姓氏来提出建议。然后当用户按下提交时,将从数据库中完全检索所选的 myPerson (由于性能问题,它一开始没有完全加载)
所以我有
<p:autoComplete minQueryLength="3" value="#{myBean.autoCompleteValue}" effect="fade" completeMethod=#{myBean.autoComplete}" forceSelection="true"/>
然后在 myBean 中:我在初始化时加载字符串列表中的名字和姓氏(我没有加载所有myPerson
对象以解决性能问题。然后我的自动完成方法看起来像这样
public List<String> autoComplete(String prefix) {
ArrayList<String> result = new ArrayList<String>();
if ((prefix == null) || (prefix.length() == 0)) {
// safety nets
// do nothing
} else {
Iterator<String> iterator = names.iterator();
while (iterator.hasNext()) {
String elem = ((String) iterator.next());
if (elem.toLowerCase().indexOf(prefix.toLowerCase()) == 0) {
result.add(elem);
}
}
}
return result;
}
这工作正常。当用户键入名字或姓氏的开头时,它会在自动完成组件的下拉菜单中得到建议。
我的问题在于之后发生的事情。如何加载myPerson
从数据库中选择的内容。自动完成值将存储在#{myBean.autoCompleteValue}
但是我不再知道用户输入的是名字还是姓氏。我无法有效地在数据库中搜索,我将不得不按名字进行搜索,如果我不幸运,按姓氏搜索。
你知道如何更好地实现这一点吗?谢谢