【发布时间】:2013-04-19 21:27:18
【问题描述】:
我有一个名为myPerson 的数据库管理实体。
它包含很多属性,还有两个名字属性:firstname,lastname
我想使用自动完成功能从数据库中选择 myPersonobjects。
用户应该能够输入名字或姓氏,并且它应该以输入数据作为他们的名字或姓氏的人提出建议。
然后当用户按下提交时,选择的 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}
但后来我不知道用户输入的是名字还是姓氏。我无法有效地在数据库中搜索,我将不得不按名字搜索,如果我不走运,按姓氏搜索。
您知道如何更好地实现这一点吗? 谢谢
【问题讨论】: