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
、はaを使用しIConverter
て、オブジェクトをaに変換し、String
からString
オブジェクトに再度変換します。String
違いは、Wicketはメソッドを使用して未知のクラスを常にに変換できることですがtoString
、その逆はできません。したがって、でを使用するIModel<Person>
場合は、独自の実装TextField
を登録する必要があります。IConverter<Person>