Javascript Primefaces自动完成保留选定下拉列表值

Javascript Primefaces自动完成保留选定下拉列表值,javascript,java,drop-down-menu,primefaces,autocomplete,Javascript,Java,Drop Down Menu,Primefaces,Autocomplete,我有一个Primefaces自动完成框,并且要求将下拉列表的值保留在所选值上,例如,我有一个包含20个元素的列表,我选择了10个元素 如果我想在选择下拉列表时选择另一个值,它将从列表的开头开始: 这是我的primefaces代码: <p:autoComplete id="transportLAvailable" dropdown="true" value="#{remissionOrderReportController.selectedTLineFilter}" fo

我有一个Primefaces自动完成框,并且要求将下拉列表的值保留在所选值上,例如,我有一个包含20个元素的列表,我选择了10个元素

如果我想在选择下拉列表时选择另一个值,它将从列表的开头开始:

这是我的primefaces代码:

<p:autoComplete id="transportLAvailable" dropdown="true"
    value="#{remissionOrderReportController.selectedTLineFilter}"
    forceSelection="true" requiredMessage="Some message"
    completeMethod="#{remissionOrderReportController.searchFromTLinesList}"
    var="transportFiltered" itemLabel="#{transportFiltered.name}"
    itemValue="#{transportFiltered}" converter="#{transportLineConverter}">
        <p:ajax event="itemSelect" process="@this"
        listener="#{remissionOrderReportController.findVehicleByTL(transportFiltered)}"/>
</p:autoComplete>

我保存这些值没有问题,只保存视图


有没有一种方法可以在p:autoComplete或javascript属性上执行此操作?

诀窍是只将当前值包含在返回列表的顶部。我是这样做的:

public List<T> autoCompleteItems(final String query) {
  List<T> results = ...; // Find results for the query
  addBoundValue(Components.getCurrentComponent(), results);
  return results;
}

protected void addBoundValue(UIInput input, List<T> results) {
  if (input.getValue() != null && typeTclass.isAssignableFrom(input.getValue().getClass())) {
    T bound = typeTclass.cast(input.getValue());
    results.remove(bound); // If it's already in the list, remove it first
    results.add(0, bound); // Add the value at the top of the list
  }
}
公共列表自动完成项(最终字符串查询){
List results=…;//查找查询的结果
addBoundValue(Components.getCurrentComponent(),结果);
返回结果;
}
受保护的void addBoundValue(UIInput,列出结果){
if(input.getValue()!=null&&typeTclass.isAssignableFrom(input.getValue().getClass())){
T bound=typeTclass.cast(input.getValue());
results.remove(bound);//如果它已经在列表中,请先删除它
results.add(0,bound);//将值添加到列表顶部
}
}
此代码来自一个通用bean,它使用列表的类型作为参数(类型在构造函数中设置为
typeTclass

请注意,我正在使用来获取。它将获得
p:autoComplete
组件,您可以从中读取值


如果您不能使用OmniFaces,请阅读

您的PF版本是什么?@Kukeltje 6.1.0创建a,然后尝试使用6.2或7.0。IIRC,在更高版本的中创建了修复程序。检查问题列表和发布说明