如何搜索primefaces选项列表

时间:2013-01-24 06:37:37

标签: primefaces

我有一个Primefaces picklist,我希望能够点击源列表,或者选择源列表中的一个项目,输入一个字符,说'R'并让我的选项列表控件导航在我的选项列表中我的列表'R'开始。基本上,我想通过字母/字符搜索选项列表。我正在使用Primefaces version 3.3.1。有人可以告诉我这是否可能,如果是的话,我该怎么办呢?提前谢谢。

1 个答案:

答案 0 :(得分:0)

https://forum.primefaces.org/viewtopic.php?t=24621

您可以通过Backing Bean中的actionListener更新选项列表,类似:

public class PickListFilter {

    private List<String> sourceList; //Getter, Setter
    private List<String> targetList; //Getter, Setter

    private String filterChar; //Getter, Setter
    //Init Lists

    public void filterList() {

        filterChar = FacesContext.getCurrentInstance().getExternalContext().
                         getRequestParameterMap().get("filterChar");


        List<String> filteredList = new ArrayList<String>();
        for (String currentString : targetList) {
            if (currentString.startsWith(letter)) filteredList.add(currentString);
        }
        targetList = filteredList;
    }    
}

要触发此ActionListener,您可以使用RemoteCommand。这个RemoteCommand将由一个小的jQuery脚本触发,它可以监听击键。

<p:remoteCommand name="filterList" update="myPickList" action="#{pickListFilter.filterList}">
</p:remoteCommand>

jQuery脚本应该是这样的:

<script>
jQuery("#picklist").keypress(function(e) {
    command([{name:'filterChar',value: e.keyCode}]); //Save key to backing bean, TODO: Convert KeyCode to Char
    filterList();
});
</script>

这是概念性的,需要做的事情。这只是一种可能的解决方案。希望这会对你有所帮助。