编辑保存为一个java.util.Date字段的单独日期和时间字段

时间:2015-02-07 00:05:00

标签: jsf

实体:会议

private Date meetingDateAndTime;

@Transient 
String meetingDate;

@Transient
String hour;

@Transient
String minutes;

Bean:

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"/>\

使用datehourminutes的单独inputText,我能够以meetingDateAndTime格式正确地将MM-dd-yyyy hh:mm保存在数据库中,但是要求也是能够编辑这些值,即当用户选择会议时,将打开一个编辑页面,其中已填充日期,小时和分钟字段,然后用户可以编辑并保存回数据库。

任何指针都表示赞赏。

1 个答案:

答案 0 :(得分:-1)

摆脱所有瞬态成员,你不需要它们。

在页面的开头编写代码,该代码接受meetingDateAndTime,将其分解为日期,小时,分钟,并用它填充表单字段。

然后编写在提交表单时调用的其他代码,从表单字段中获取值,重建日期,并将其存储在meetingDateAndTime中。

修改

应该按需计算易于计算且很少需要的数据,内存中不应占用任何存储空间。此外,只要您有两个必须始终彼此一致的数据项,Murphy's law (wikipedia)就会预测会有一段时间他们不同意。