Wicket模型如何与通用模型一起工作?

Wicket模型如何与通用模型一起工作?,wicket,Wicket,我想知道一些关于wicket支持通用模型的知识。我了解模型、道具模型和道具复合模型 但是模型课呢?如果我这样做会发生什么: Label<Person> label = new Label<Person> ( "someID", new Model<Person>() ) Label Label=新标签(“someID”,新模型()) 标签上会显示什么?toString输出 假设我在一个文本字段中有相同的内容。它将在该对象中设置什么值?Wicket的源代码有

我想知道一些关于wicket支持通用模型的知识。我了解模型、道具模型和道具复合模型

但是模型课呢?如果我这样做会发生什么:

Label<Person> label = new Label<Person> ( "someID", new Model<Person>() )
Label Label=新标签(“someID”,新模型())
标签上会显示什么?toString输出


假设我在一个文本字段中有相同的内容。它将在该对象中设置什么值?

Wicket的源代码有很好的文档记录,并且不言自明<代码>标签正在使用
组件
中的
getDefaultModelObjectAsString()
,如下所示:

// Get converter
final Class<?> objectClass = modelObject.getClass();

final IConverter converter = getConverter(objectClass);

// Model string from property
final String modelString = converter.convertToString(modelObject, getLocale());
//获取转换器
最终类objectClass=modelObject.getClass();
最终IConverter转换器=getConverter(objectClass);
//属性中的模型字符串
最终字符串modelString=converter.convertToString(modelObject,getLocale());
因此,在这里您可以看到Wicket使用
IConverter
将模型对象转换为
字符串。查看默认的
ConverterLocator
的实现,您将看到,如果尚未为此类对象注册任何
IConverter
,Wicket将使用
DefaultConverter
,该转换器使用
org.apache.Wicket.util.lang.Objects
静态方法将对象转换为
字符串


TextField
还使用
IConverter
将对象转换为
字符串
,并再次从
字符串
转换为对象。不同之处在于Wicket总是能够使用
toString
方法将未知类转换为
String
,而不是相反。因此,如果要将
IModel
TextField
一起使用,则需要注册自己的
IConverter
实现

总之,它使用了
toString()
方法。如果您想要不同的东西,请提供您自己的转换器。