自动完成DropDownChoice

时间:2018-11-21 15:39:35

标签: java autocomplete wicket dropdownchoice

我正在寻找最简单的方法,将自动完成应用于带有名称列表的检票口8下拉菜单。

我只想要一个提示。

List<User> list = getUsers();

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

2 个答案:

答案 0 :(得分:0)

DropDownChoice组件生成纯HTML <select>元素。

您的选择是:

  1. 使用JavaScript库将普通的HTML Select元素转换为自动完成程序,例如Select2.jsChosen.js等。您可以使用WicketStuff-Select2或手动进行$.select2('#yourSelectId')
  2. 使用Wicket-Extensions AutoCompleteTextField代替DropDownChoice

答案 1 :(得分:0)

我正在使用这段代码,但是不确定它是否工作正常。

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();
                }               
            });