【问题标题】:Wicket AutoCompleteTextField model castingWicket AutoCompleteTextField 模型铸造
【发布时间】:2013-03-27 18:50:14
【问题描述】:

看起来 autocompletetextfield 的模型对象是一个字符串,即使它应该是一个员工,这会导致无法从字符串转换为员工的异常。为什么?又该如何解决?

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

【问题讨论】:

    标签: java autocomplete wicket


    【解决方案1】:

    AutoCompleteTextfield 的 javadoc 说:

    要将输入转换回非字符串类型,您必须提供 自定义 IConverter,通过覆盖 #getConverter(Class) 或 通过在应用程序的ConverterLocator 上设置合适的IConverter

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多