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

Edit separate Date and time fields that are saved as one java.util.Date field

实体:会议

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

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

不胜感激。

去掉所有临时成员,你不需要它们。

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

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

编辑

易计算且很少用到的数据应该按需计算,不应该在内存中占用存储空间。此外,每当您有两个必须始终相互一致的数据项时,Murphy's law (wikipedia) 预测它们有时会不一致。