0
之间的区别,我有两个primefaces日历组件如下:计算两个日期时间
<h:outputLabel value="#{prezmsg['MAINTENANCE.DATE_DEBUT']}"/>
<p:calendar id="dateDebut-create"
value="#{maintenanceMBean.webBean.vo.dateDebut}"
pattern="dd-MM-yyyy HH:mm:ss" mask="true">
<p:ajax event="dateSelect" listener="#{maintenanceMBean.webBean.dateDiff}"/>
</p:calendar>
<p:message for="dateDebut-create"/>
<h:outputLabel value="#{prezmsg['MAINTENANCE.DATE_FIN']}"/>
<p:calendar id="dateFin-create"
value="#{maintenanceMBean.webBean.vo.dateFin}" pattern="dd-MM-yyyy HH:mm:ss"
mask="true">
<p:ajax event="dateSelect" listener="#{maintenanceMBean.webBean.dateDiff}"/>
</p:calendar>
<p:message for="dateFin-create"/>
所以我要计算这两个日历组件之间只有时间上的差异,并把该值在其他日历是只有时间。
<h:outputLabel value="#{prezmsg['MAINTENANCE.DUREE']}"/>
<p:calendar id="duree-create" value="#{maintenanceMBean.webBean.vo.duree}" pattern="HH:mm:ss"
timeOnly="true" readonly="true"/>
<p:message for="duree-create"/>
当我选择的开始日期和此功能被触发结束日期:
public void dateDiff(SelectEvent event){
if(getVo().getDateDebut() != null && getVo().getDateFin() != null){
Date calculatedTime = null;
long diff = getVo().getDateFin().getTime() - getVo().getDateDebut().getTime();
long diffSeconds = diff/1000 % 60;
long diffMinutes = diff/(60 * 1000) % 60;
long diffHours = diff/(60 * 60 * 1000);
try {
calculatedTime = new SimpleDateFormat("HH:mm:ss").parse(diffHours+":"+diffMinutes+":"+diffSeconds);
System.out.print("Calculated Time : " + calculatedTime);
} catch (ParseException e) {
e.printStackTrace();
}
getVo().setDuree(calculatedTime);
}
}
所以在控制台我有这样的信息:Calculated Time : Fri Jan 02 00:00:00 GMT 1970
和我第三组元没有设置值。
所以实际的问题是如何在Ajax请求后更新的组件。你的头衔是错的,你注意到了吗?如果你能问核心问题,很可能你会找到一个重复的问题。 – Kukeltje