实体:会议
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"/>\
使用date
,hour
和minutes
的单独inputText,我能够以meetingDateAndTime
格式正确地将MM-dd-yyyy hh:mm
保存在数据库中,但是要求也是能够编辑这些值,即当用户选择会议时,将打开一个编辑页面,其中已填充日期,小时和分钟字段,然后用户可以编辑并保存回数据库。
任何指针都表示赞赏。
答案 0 :(得分:-1)
摆脱所有瞬态成员,你不需要它们。
在页面的开头编写代码,该代码接受meetingDateAndTime,将其分解为日期,小时,分钟,并用它填充表单字段。
然后编写在提交表单时调用的其他代码,从表单字段中获取值,重建日期,并将其存储在meetingDateAndTime中。
修改
应该按需计算易于计算且很少需要的数据,内存中不应占用任何存储空间。此外,只要您有两个必须始终彼此一致的数据项,Murphy's law (wikipedia)就会预测会有一段时间他们不同意。