gpt4 book ai didi

java - 在没有 String 作为通用类型的 Wicket 口中使用 AutoCompleteTextField

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:29 26 4
gpt4 key购买 nike

这个问题是这样的:handling to onchange event of AutoCompleteTextField in wicket

我正在尝试使用带有自定义类的 AutoCompleteTextField 作为通用类型,并添加 AjaxFormComponentUpdatingBehavior。我的意思是我想要一个

AutoCompleteTextField<SomeClass> myAutoComplete = ...;

然后添加一个 AjaxFormComponentUpdatingBehavior:

myAutoComplete.add(new AjaxFormComponentUpdatingBehavior("onchange") {

@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println( "Value: "+getValue() );

}
});

问题是,出于某种原因,添加该行为会使表单尝试使用字符串设置模型对象(即使 AutoCompleteTextField 具有通用类型 SomeClass),从而在触发 onchange 事件时导致 ClassCastException。

有没有办法使用AutoCompleteTextField没有它 AutoCompleteTextField<String> ?我找不到任何例子。感谢您的宝贵时间!

感谢用户biziclop感谢他在这件事上的帮助。

最佳答案

这与事件处理程序无关,这是由于您的组件中缺少模型类型设置造成的。

表单组件可以从 3 个来源派生模型类型:

  1. 如果您使用 PropertyModel 则自动解决它或 CompoundPropertyModel .
  2. 接受它作为一个额外的构造函数参数。
  3. 通过setType()方法。
  4. (如果以上都不适用,默认行为是使用字符串或 boolean 值作为复选框。)

这些是你的选择,你可以选择三个中的任何一个,但我认为 1 比 2 好,后者比 3 好。

更新:您可能已经知道这一点,但如果您的自定义类确实是自定义的,您还需要一个 IConverter处理 String<->Someclass 转换:您可以将其注册到应用程序或覆盖组件的 getConverter(Class<?> clazz )方法返回它。

关于java - 在没有 String 作为通用类型的 Wicket 口中使用 AutoCompleteTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com