2012-11-02 51 views
1

我有一個字段類型爲java.util.Calendar的bean。我正在擴展FormFieldFactory類以適當地呈現剩餘的字段,但我不確定如何使用PopupDateField呈現字段以鍵入java.util.CalendarVaadin:將私有java.util.Calendar項目綁定到PopupDateField

+0

字段類型爲Calendar的任何特定原因? – miq

+0

易用性主要。我正在使用SOAP Web服務,並且日期格式是日期格式。 –

+0

僅供參考:在Vaadin 7中有一個[Converter](https://vaadin.com/api/7.3.2/com/vaadin/data/util/converter/Converter.html)界面可以解決這個問題([例子](http://stackoverflow.com/questions/26547228/vaadin-converter-for-java-sql-timestamp))。 – Krayo

回答

1

前一段時間我創建了一個定製版本PopupDateField,修改爲java.sql.Date。我個人使用java.util.Date,但決定不在我手中。在我的情況下,容易的部分是java.sql.Datejava.util.Date的子類,而java.util.Calendar不是。

我將描述我對PopupDateField派生類所做的修改,但是我意識到它不會工作,因爲日曆不是從Date派生的。

我從來沒有與BeanItems玩耍了,但你可以嘗試創建一個自定義Property的作品爲Calendar的包裝和perhapse創建自己的VaadinPropertyDescriptor該字段綁定到你的自定義屬性。

此答案旨在更明確,但我希望它至少有所幫助。如果有任何可能影響bean結構的機會,我建議您將日曆切換爲日期,並僅在需要時使用帶有日期的日曆。

1

如果您正在構建一個Web應用程序 - 您可以向該域添加臨時Date屬性,請執行日曆轉換設置器& 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); 
    } 
相關問題