This question follows this: handling to onchange event of AutoCompleteTextField in wicket
I'm trying to use the AutoCompleteTextField with a custom class as the generic type, and to add an AjaxFormComponentUpdatingBehavior. What I mean is I want to have a
AutoCompleteTextField<SomeClass> myAutoComplete = ...;
and after that add a AjaxFormComponentUpdatingBehavior:
myAutoComplete.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println( "Value: "+getValue() );
}
});
The problem is that for some reason, adding that behavior makes the form try to set the model object with a String (even though the AutoCompleteTextField has a generic type of SomeClass), causing a ClassCastException when the onchange event fires.
Is there a way to use AutoCompleteTextField
without it being AutoCompleteTextField<String>
? I couldn't find any example. Thanks for your time!
and thanks to the user biziclop for his help in this matter.
This is unrelated to the event handler, it is caused by the lack of a model type set in your component.
Form components can derive the model type from 3 sources:
PropertyModel
or a CompoundPropertyModel
.setType()
method.These are your options, you can choose any of the three, but I think 1 is better than 2, which is better than 3.
Update: You probably already know this but if your custom class is really custom, you'll also need an IConverter
that handles the String<->Someclass conversions: you can either register it with the application or override your component's getConverter(Class<?> clazz )
method to return it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With