我有一个Primefaces picklist
,并且我希望能够单击源列表,或者选择源列表中的一个项目,输入一个字符,比如“R”,然后让我的选项列表控件导航到我的选项列表中的那个点'R 的开始列表。本质上,我想按字母/字符搜索选项列表。我正在使用Primefaces version 3.3.1
. 有人可以让我知道这是否可行,如果可以,我该怎么做?提前致谢。
问问题
626 次
1 回答
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>
这是概念上需要做的事情。这只是一个可能的解决方案。希望这对您有所帮助。
于 2013-01-24T22:45:42.840 回答