Автозаполнение Primefaces сохранить выбранное значение выпадающего - PullRequest
1 голос
/ 30 мая 2019

У меня есть поле автозаполнения 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: автозаполнение или javascript ?

1 Ответ

2 голосов
/ 31 мая 2019

Хитрость заключается в том, чтобы просто включить текущее значение в начало возвращаемого списка.Я делаю это так:

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

Этот код получен из универсального компонента, который использует тип списка в качестве параметра (тип устанавливается в конструкторе typeTclass).

Обратите внимание, что я использую OmniFaces , чтобы получить текущий компонент .Он получит компонент p:autoComplete, из которого вы можете прочитать значение.

Если вы не можете использовать OmniFaces, прочитайте Как узнать вызывающий компонент в методе getter?

...