作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想了解一些关于 wicket 支持泛型模型的信息。我了解了模型、 Prop 模型和 Prop 复合模型。
但是 Model 类呢?如果我这样做会发生什么:
Label<Person> label = new Label<Person> ( "someID", new Model<Person>() )
该标签中将显示什么? toString 输出?
假设我在 TextField 中有相同的内容。它将在该对象中设置什么值?
最佳答案
Wicket 的源代码有很好的文档记录并且不言自明。 Label
正在使用 getDefaultModelObjectAsString()
来自Component
看起来像这样:
// Get converter
final Class<?> objectClass = modelObject.getClass();
final IConverter converter = getConverter(objectClass);
// Model string from property
final String modelString = converter.convertToString(modelObject, getLocale());
所以在这里您可以看到 Wicket 使用 IConverter
将模型对象转换为 String
。查看默认ConverterLocator
的执行情况如果您还没有注册任何IConverter
,您会看到对于这种类型的对象,Wicket 将使用 DefaultConverter
使用 org.apache.wicket.util.lang.Objects
将对象转换为 String
的静态方法。
TextField
还使用IConverter
将对象转换为 String
以及来自String
又到一个物体。不同之处在于 Wicket 始终能够将未知类转换为 String
使用toString
方法,但不是其他方法。所以如果你想使用IModel<Person>
与 TextField
您需要注册自己的 IConverter<Person>
执行。
关于wicket - Wicket 模型如何与泛型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116921/
我是一名优秀的程序员,十分优秀!