Primefaces自动完成功能会保留选定的下拉值

时间:2019-05-29 21:58:45

标签: javascript java drop-down-menu primefaces autocomplete

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

enter image description here

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

enter image description here

这是我的素字代码:

<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 属性上执行此操作?

1 个答案:

答案 0 :(得分:0)

我这样做是这样的:

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
  }
}

此代码来自一个通用bean,该通用bean使用列表的类型作为参数(类型在构造函数中设置为typeTclass)。

请注意,我正在使用OmniFaces来获取current component。它会为您提供p:autoComplete组件,您可以从中读取值。

另请参阅: