2013-01-24 97 views
1

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

回答

0

您可以通过更新一个ActionListener的选择列表中的支撑bean,这样的事情:

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> 

这是概念上需要做什么。这只是一个可能的解决方案。希望这可以帮助你。