1

autocompletetextfieldのmodelobjectは文字列であるように見えますが、それは従業員である必要があり、文字列から従業員にキャストできないという例外が発生します。なんで?そして、どのようにそれを修正することができますか?

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

1 に答える 1

3

のjavadocは次のようにAutoCompleteTextfield述べています。

入力を非文字列型に戻すには、IConverterオーバーライドするか、アプリケーション#getConverter(Class)のに適切なものを設定することにより、カスタムを提供する必要があります。IConverterConverterLocator

于 2013-03-27T10:50:14.600 に答える