を使用していますあなたは、例えば、IModel<java.util.Date>
であなたのLocalDate
となどのモデルをラップすることができます
public static class LocalDateModel implements IModel<java.util.Date> {
private IModel<LocalDate> localDateModel;
public LocalDateModel(IModel<LocalDate> localDateModel){
this.localDateModel = localDateModel;
}
@Override
public Date getObject() {
return convertLocalDateToUtilDateSomehow(localDateModel.getObject());
}
@Override
public void setObject(Date object) {
localDateModel.setObject(convertUtilDateToLocalDateSomehow(object));
}
@Override
public void detach() {
localDateModel.detach();
}
}
このようなモデルをフォームコンポーネントにフィードすると、使用するフォームコンポーネントはうまく動作します。
CompoundPropertyModel
に自動的にそのようなラッピングモデルを提供する場合は、ラップモデルを拡張し、ラップモデルが必要であると推測する方法をオーバーライドする必要があります(CompoundPropertyModel#wrapOnInheritance(Component component)
)。
LocalDateModelButAlsoWrapping
は当然上記
LocalDateModel
例の拡張子だけでなく、
IWrapModel<T>
を実装する
@Override
public <C> IWrapModel<C> wrapOnInheritance(Component component)
{
IWrapModel<C> actualModel = super.wrapOnInheritance(component);
if (actualModel.getObject() instanceOf LocalDate) {
return new LocalDateModelButAlsoWrapping(actualModel);
} else {
return actualModel;
}
}
ような何か。
あなたの代わりにあなたの通常のCompoundPropertyModel
のこの拡張機能を使用する場合は、フィールドがLocalDate
されたときに検出し、java.util.Date
モデルのように見えるようにラップされている(あなたのDateTextField
など)のコンポーネントにモデルを提供します。
私が与えたコードスニペットは、一般的な仕組みを説明するために提供しているだけなので、モデルオブジェクトを取得しない方がいいでしょう。したがって、推論する方法を工夫することをお勧めします。期待されるオブジェクトのタイプ(例えば、Component
の引数がDateTextField
であるかどうかを確認できます)が、これは私が想像することができる解決策の一般的な方向です。
は、あなたが正確な実装を提供することができ、してください?私はあなたのヒントに従うことはできません[この質問](http://stackoverflow.com/questions/42804070/java-time-localdate-and-wicket-7-datetextfield) – JimHawkins