Java 在wicket中使用不带字符串的AutoCompleteTextField作为泛型类型
问题如下: 我试图使用AutoCompleteTextField和一个自定义类作为泛型类型,并添加一个AjaxFormComponentUpdateingBehavior。我的意思是我想要一个Java 在wicket中使用不带字符串的AutoCompleteTextField作为泛型类型,java,web-applications,autocomplete,wicket,Java,Web Applications,Autocomplete,Wicket,问题如下: 我试图使用AutoCompleteTextField和一个自定义类作为泛型类型,并添加一个AjaxFormComponentUpdateingBehavior。我的意思是我想要一个 AutoCompleteTextField<SomeClass> myAutoComplete = ...; 问题在于,出于某种原因,添加该行为会使表单尝试使用字符串设置模型对象(即使AutoCompleteTextField具有SomeClass的泛型类型),从而在触发onchange事件
AutoCompleteTextField<SomeClass> myAutoComplete = ...;
问题在于,出于某种原因,添加该行为会使表单尝试使用字符串设置模型对象(即使AutoCompleteTextField具有SomeClass的泛型类型),从而在触发onchange事件时导致ClassCastException
有没有一种方法可以使用AutoCompleteTextField
而不使用AutoCompleteTextField
?我找不到任何例子。谢谢你的时间
感谢用户在这方面的帮助。这与事件处理程序无关,是由于组件中缺少模型类型集造成的 表单组件可以从3个源派生模型类型:
PropertyModel
或CompoundPropertyModel
,请自动解析它setType()
方法更新:您可能已经知道这一点,但是如果您的自定义类是真正自定义的,那么您还需要一个处理StringSomeclass转换的
IConverter
:您可以向应用程序注册它,也可以覆盖组件的getConverter(class clazz)
方法返回它。但他正在使用方法1和(AutoCompleteTextField myAutoComplete)?@bert不幸的是,没有。Wicket只解析实现IObjectClassAwareModel
的模型的类型信息。更新是关键。谢谢
myAutoComplete.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println( "Value: "+getValue() );
}
});