1

我有一个带有 type 字段的 bean java.util.Calendar。我正在扩展FormFieldFactory类以适当地呈现剩余的字段,但我不确定如何使用 PopupDateField 来呈现要键入的字段java.util.Calendar

4

2 回答 2

1

如果您正在构建一个 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);
    }
于 2013-07-09T21:32:28.200 回答
1

不久前,我创建了一个自定义版本的PopupDateFieldmodified for java.sql.Date。我个人会使用 java.util.Date,但决定权不在我手中。在我的例子中,最简单的部分是它不是whilejava.sql.Date的子类。java.util.Datejava.util.Calendar

我将描述我对 PopupDateField 派生类所做的修改,但我意识到它可能不会起作用,因为 Calendar 不是从 Date 派生的。

我从来没有玩过 BeanItems,但您可以尝试创建一个自定义Property来作为包装器,Calendar并且也许创建您自己的VaadinPropertyDescriptor以将该字段绑定到您的自定义属性。

这个答案是为了更明确,但我希望它至少有点帮助。如果您有可能影响 bean 结构,我建议您将 Calendar 切换为 Date 并仅在需要时将 Calendar 与 Date 一起使用。

于 2012-11-03T08:50:10.083 回答