2015-02-07 143 views
0

實體:會議編輯獨立的日期和時間字段保存爲一個java.util.Date場

private Date meetingDateAndTime; 

@Transient 
String meetingDate; 

@Transient 
String hour; 

@Transient 
String minutes; 

豆:

saveMeeting(){ 
    String meetingTime = selectedMeeting.getHour()+":"+selectedMeeting.getMinutes(); 
    Date calculatedDate = getAppendedTimeForDate(selectedMeeting.meetingDate,meetingTime); 
    selectedMeeting.setMeetingDateTime(calcualtedDate); 
} 

private static Date getAppendedTimeForDate(Date selectedDate,String t) throws Exception{ 
    String d = new SimpleDateFormat("MM-dd-yyyy").format(selectedDate); 
    String DATE_FORMAT_NOW = "MM-dd-yyyy hh:mm"; 
    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
    Date calculatedDate=sdf.parse(d+" "+t); 
    return calculatedDate; 
} 

AddEditMeeting.xhtml:

<h:inputText value="selectedMeeting.meetingDate"/> 
<h:inputText value="selectedMeeting.hour"/> 
<h:inputText value="selectedMeeting.minute"/>\ 

對於date,hourminutes單獨的inputText,我可以保存meetingDateAndTime正確地在格式MM-dd-yyyy hh:mm格式的數據庫中,但要求是能夠編輯這些值以及即當用戶選擇會議,編輯頁面打開日期,小時和分鐘字段已填寫,然後用戶可以編輯並保存回數據庫。

任何指針表示讚賞。

+0

您正在合併日期和時間,將組合解析爲一個'java.util.Date',然後將其保存到數據庫中。您需要在從數據庫檢索日期時將它們分開,並通過使用與java.util.Data API關聯的某些函數在相關的輸入字段中分別顯示日期,小時和分鐘。你可以使用一些轉換器來達到這個目的。除此之外,數據/時間在很大程度上取決於您必須充分考慮的特定時區。當需要考慮時區時,java.util.Date API不是你想要的。 – Tiny 2015-02-07 12:04:37

+0

不知道我是否理解這個問題。我瞭解到您希望根據來自數據庫的數據預設屬性。但是對此的回答非常明顯(就像現在你正在做的事情相反,比如'meetingDate = extractMeetingDateFrom(dateField)'),我很困惑你到底有什麼問題。不用說,這一切確實是一個巨大的代碼味道。 – BalusC 2015-02-09 10:13:21

+0

在屏幕上提取和顯示不是問題。一旦它已經存儲在數據庫中,我無法編輯日期。 – 2015-02-09 15:57:14

回答

-1

擺脫所有的短暫成員,你不需要他們。

在您的頁面的開頭編寫代碼,該代碼需要meetingDateAndTime,將其分解爲日期,小時,分鐘,並使用它填充表單字段。

然後編寫額外的代碼,當提交表單時,從表單字段獲取值,重新構建日期,並將其存儲在meetingDateAndTime中。

編輯

易於計算且很少需要的數據應該按需計算,存儲不應該由他們在佔用內存。此外,無論何時您有兩個數據項必須始終彼此同意,Murphy's law (wikipedia)預測會有一段時間他們不會同意。

+1

對不起,我刪除了我的回覆 – Kukeltje 2015-02-07 11:24:29

相關問題