看起来autocompletetextfield的Looks对象是一个字符串,尽管它应该是一个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
}
});发布于 2013-03-27 18:50:15
AutoCompleteTextfield的javadoc说:
要将输入转换回非字符串类型,您必须提供自定义
IConverter,方法是覆盖#getConverter(Class)或在应用程序的ConverterLocator上设置合适的IConverter。
https://stackoverflow.com/questions/15653008
复制相似问题