Reputation: 16416
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.
Upvotes: 5
Views: 3484
Reputation: 49804
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.
Upvotes: 5