タイプのフィールドを持つBeanがありますjava.util.Calendar
。残りのフィールドを適切にレンダリングするようにクラスを拡張してFormFieldFactory
いますが、PopupDateFieldを使用してタイプするフィールドをレンダリングする方法がわかりませんjava.util.Calendar
。
2 に答える
少し前に、のカスタムバージョンを作成しましPopupDateField
たjava.sql.Date
。私は個人的にjava.util.Dateを使用しますが、決定は私の手に委ねられていません。私の場合の簡単な部分は、それjava.sql.Date
がのサブクラスであるのjava.util.Date
に対し、そうjava.util.Calendar
ではないということです。
PopupDateField派生クラスに加えた変更について説明しようとしましたが、CalendarがDateから派生していないため、おそらく機能しないことに気付きました。
BeanItemsをいじったことはありませんがProperty
、ラッパーとして機能するカスタムを作成して、そのフィールドをカスタムプロパティにバインドするCalendar
独自のカスタムを作成することもできます。VaadinPropertyDescriptor
この答えはより明確なものであることが意図されていましたが、少なくともある程度役立つことを願っています。Beanの構造に影響を与える可能性がある場合は、カレンダーを日付に切り替えて、必要な場合にのみ日付付きのカレンダーを使用することをお勧めします。
Webアプリを構築している場合は、ドメインに一時的なDateプロパティを追加し、setter&getterでカレンダーから日付への変換を実行して、元のフィールドをフェッチまたは更新できます。お役に立てば幸いです!!!
@Transient
private Datetime calendarExAsDate; // corresponds to @Column... private Calendar calendarEx property of the domain.
public DateTime getCalendarExAsDate() {
if (this.getCalendarEx() == null) return null;
return new DateTime(this.getCalendarEx().getTime());
}
public void setCalendarExAsDate(DateTime calendarExAsDate) {
if (calendarExAsDate== null) return;
this.calendarExAsDate = calendarExAsDate;
Calendar cal = Calendar.getInstance();
cal.setTime(calendarExAsDate.toDate());
this.setCalendarEx(cal);
}