Автозаполнение DropDownChoice

Я ищу самый простой способ применить автозаполнение к выпадающему списку калитки 8 со списком имен.

просто хочу подсказку..

List<User> list = getUsers();

final DropDownChoice<User> dropdown = new DropDownChoice<User>("dropdown",
                new PropertyModel<User>(this, "selected"), list, renderer) { //code };

person Community    schedule 21.11.2018    source источник


Ответы (2)


Я использую этот фрагмент кода, но я не уверен, что он работает хорошо.

dropdown.add(new AutoCompleteBehavior(new StringAutoCompleteRenderer()){
                /**
                 * 
                 */
                private static final long serialVersionUID = 1L;

                @Override
                protected Iterator getChoices(String input) {
                    List<String> completions = new ArrayList();
                    Iterator iter = list.iterator();
                    while(iter.hasNext()){
                        String user  = ((User) iter.next()).getAddress();
                        if(user.startsWith(input)){
                            completions.add(user);
                        }
                    }                   
                    return completions.iterator();
                }               
            });
person Community    schedule 21.11.2018

Компонент DropDownChoice создает простой элемент HTML <select>.

Ваши варианты:

  1. используйте библиотеку JavaScript, которая преобразует простые элементы HTML Select в автозаполнение, например Select2.js, Chosen.js и подобные. Вы можете использовать WicketStuff-Select2 или просто сделать $.select2('#yourSelectId') вручную
  2. используйте Wicket-Extensions AutoCompleteTextField вместо DropDownChoice
person martin-g    schedule 21.11.2018