Wicket模型如何与通用模型一起工作?
我想知道一些关于wicket支持通用模型的知识。我了解模型、道具模型和道具复合模型 但是模型课呢?如果我这样做会发生什么:Wicket模型如何与通用模型一起工作?,wicket,Wicket,我想知道一些关于wicket支持通用模型的知识。我了解模型、道具模型和道具复合模型 但是模型课呢?如果我这样做会发生什么: Label<Person> label = new Label<Person> ( "someID", new Model<Person>() ) Label Label=新标签(“someID”,新模型()) 标签上会显示什么?toString输出 假设我在一个文本字段中有相同的内容。它将在该对象中设置什么值?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()
方法。如果您想要不同的东西,请提供您自己的转换器。