У меня есть Поле автозаполнения Primefaces и есть требование к сохранить значение раскрывающегося списка на выбранном значении, например, у меня есть список с 20 элементами, и я выбираю 10 элементов.
Если я хочу выбрать другое значение при выборе раскрывающегося списка Он начинается в начале списка:
Это мой простой код:
<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?
@Кукельтье 6.1.0
Создайте минимальный воспроизводимый пример и попробуйте с 6.2 или 7.0, пожалуйста. IIRC, исправление было создано в более позднем выпуске. Проверьте список проблем и примечания к выпуску
Хитрость заключается в том, чтобы просто включить текущее значение в верхнюю часть возвращаемого списка. Я делаю это так:
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, прочтите Как узнать вызывающий компонент в методе геттера?
Какая у вас версия ПФ?