Java Wicket AutoCompleteTextField模型铸造

Java Wicket AutoCompleteTextField模型铸造,java,autocomplete,wicket,Java,Autocomplete,Wicket,看起来autocompletetextfield的modelobject是一个字符串,即使它应该是employee,也会导致无法从字符串转换为employee的异常。为什么?如何修复呢 final DefaultCssAutocompleteTextField<Employee> field = new DefaultCssAutocompleteTextField<Employee>("field", new Model<Employee>(

看起来autocompletetextfield的modelobject是一个字符串,即使它应该是employee,也会导致无法从字符串转换为employee的异常。为什么?如何修复呢

        final DefaultCssAutocompleteTextField<Employee> field = new DefaultCssAutocompleteTextField<Employee>("field", new Model<Employee>(model.getObject().getMatch().getSupervisor())) {
            @Override
            protected Iterator<Employee> getChoices(String input) {
                if (Strings.isEmpty(input)){
                    List<Employee> emptyList = Collections.emptyList();
                    return emptyList.iterator();
                }
                return supervisorDao.getAutoCompleteCapableSupervisors(input, 6).iterator();
            }
        };

        form.add(field);

        field.add(new AjaxFormSubmitBehavior(form, "onchange") {
            @Override
            protected void onSubmit(AjaxRequestTarget target) {

                //this generates an exception: cant cast from string to employee. why? and how can it be fixed?
                Employee e = supervisorService.findOne(field.getModelObject().getId());

                //do some stuff with the employee and some components

            }

            @Override
            protected void onError(AjaxRequestTarget target) {
                //do nothing
            }
        });
final DefaultCSAUTOCompleteTextField=new DefaultCSAUTOCompleteTextField(“field”,新模型(Model.getObject().getMatch().getSupervisor())){
@凌驾
受保护的迭代器getChoices(字符串输入){
if(Strings.isEmpty(输入)){
List-emptyList=Collections.emptyList();
返回emptyList.iterator();
}
返回supervisorDao.getAutoCompleteCapableSupervisors(输入,6.iterator();
}
};
表格。添加(字段);
添加(新的AjaxFormSubmitBehavior(表格“onchange”){
@凌驾
提交时受保护的void(AjaxRequestTarget目标){
//这将生成一个异常:无法从字符串强制转换为员工。为什么?如何修复?
Employee e=supervisorService.findOne(field.getModelObject().getId());
//对员工和一些组件做一些事情
}
@凌驾
受保护的void onError(AjaxRequestTarget目标){
//无所事事
}
});

AutoCompleteTextfield
的javadoc说:

要将输入转换回非字符串类型,您必须提供 通过重写
#getConverter(Class)
或 通过在应用程序的
转换器定位器
上设置合适的
i转换器