를 사용
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