4

自动完成组件(多个)在后台绑定到一些数据,如果自动提供的结果都不符合搜索条件,则输入字段的键入值应在按 Enter 时添加到列表中。

但是,如果某些结果确实符合搜索条件,我们仍然希望组件以某种方式允许用户将键入的值添加到列表中,而不是从列表中选择值,如果需要的话。

我们试图实现的功能实际上与将电子邮件收件人添加到电子邮件非常相似。“收件人”字段自动完成(多个)绑定到用户联系人。但尽管如此,用户仍然可以在创建新电子邮件时添加新的电子邮件地址。

我们如何使自动完成组件在按回车或添加“;”时接受要添加的实际键入值 在输入的末尾?

设置“forceselection=false”似乎不起作用。我们使用的是 primefaces 3.5。

谢谢,乌罗斯

4

1 回答 1

1

考虑以下用于自动完成的完整方法

public List<String> completeEmailIds(String keyword) {
    List<String> emailsIds = new ArrayList<String>();
    List<String> availableEmailIds = aMethodThatReturnsAvailableEmailIdsBasedOnKeyword(String keyword);
    if(!(availableEmailIds.isEmpty())){
        emailIds.addAll(availableEmailIds);         
    }else{
        emailIds.add(keyword); // if availableEmailIds returns empty, then new typed email will also be added.
    }
    return emailIds;
}

这样,将创建并返回自动完成项目。您可以在自动完成组件中使用它们来获取多个值。希望这可以帮助

于 2013-06-07T17:14:33.570 回答