как я могу установить значение в Wicket AutoCompleTextField - PullRequest
0 голосов
/ 22 марта 2019

У меня есть AutoCompleteTextField

    private class AutoCompleteField extends AutoCompleteTextField<City> {

    public AutoCompleteField(String autoField, HibernateModel<City> selectedWorkTemplate,
                             IAutoCompleteRenderer<City> autoCompleteRenderer) {
        super(autoField, selectedWorkTemplate, autoCompleteRenderer);
    }

    @Override
    protected Iterator<City> getChoices(String input) {
        return input == null ? Collections.emptyIterator() :
                cityRepository.findByNameLike(input).iterator();
    }
}

, и я объявил его следующим образом

IAutoCompleteRenderer<City> autoCompleteRenderer = new AbstractAutoCompleteTextRenderer<City>() {
        @Override
        protected String getTextValue(City object) {
            return object.getName();
        }
    };
    cityField = new AutoCompleteField("cityField", selectedCityModel, autoCompleteRenderer);
    form.add(cityField);

Итак, как я могу установить значение, например, кнопкой?Я пытаюсь установить в selectedCityModel, но это ничего не дало, AutoCompleteTextField не получить / установить значение для этой модели.

1 Ответ

0 голосов
/ 25 марта 2019

Изменен мой класс как

private class AutoCompleteField extends AutoCompleteTextField<String> {

public AutoCompleteField(String autoField, IModel<String> selectedCityListNameModel) {
    super(autoField, selectedCityListNameModel);
}

@Override
protected Iterator<String> getChoices(String input) {
    return input == null ? Collections.emptyIterator() :
            cityRepository.findByNameLike(input).iterator();
}

}

и selectedCityListNameModel объявление как

private IModel<String> selectedCityListNameModel = Model.of("");

, так что теперь AutoCompleteField установлен и значение GET из selectedCityListNameModel (егостранно ... я думаю, что конструктор для AutoCompleteTextField с рендерером не работает должным образомсделать это для простого TextField

...