我正在将Struts2-jQueryDatepicker与TimepickerAddon一起使用。
Datepicker
Timepicker
假设java.util.Date从Action getMyDate()getter方法返回了一个对象:
java.util.Date
Action
getMyDate()
<sj:datepicker displayFormat="dd/mm/yy" timepickerFormat="HH:mm" timepicker="true" name="myDate" />
这始终会导致正确填充日期,但timepicker始终为00:00。
timepicker
00:00
好的,我已经找到时间扩展我在12月18日提出并在评论中简要提及的解决方案的时间。
该<sj:datepicker timepicker="true">标签正确地分析Date对象,而不是它的字符串表示。 此 问题 在 第1057期中进行了 报告 ,状态为已接受但仍未修复。
<sj:datepicker timepicker="true">
这 有效 :
<sj:datepicker displayFormat="dd/mm/yy" timepicker="true" value="%{new java.util.Date()}" />
这 不起作用 :
<sj:datepicker displayFormat="dd/mm/yy" timepicker="true" value="%{'07/01/2015 14:42'}" />
当不使用Converter时,您需要将日期时间的格式发送到一个String变量,而不是Date一个:
String
Date
<sj:datepicker displayFormat="dd/mm/yy" timepicker="true" name="dateStr" /> private String dateStr; public void setDateStr(String dateStr){ this.dateStr = dateStr; } public String getDateStr(){ return dateStr; }
如果需要日期(可能需要这样做),则可以使用String Getter和Setter,它们将处理Date和String之间的解析和格式设置:
private static final String FORMAT = "dd/MM/yyyy HH:mm"; private Date date; public void setDateStr(String dateStr){ date = new SimpleDateFormat(FORMAT,Locale.ITALIAN).parse(dateStr); } public String getDateStr(){ return new SimpleDateFormat(FORMAT,Locale.ITALIAN).format(date); }
但是由于上述错误,这两种方法都不起作用。解决方案是如此简单,以至于我在对该问题的最后评论中笑了:
使用String setter和Date getter ,它将可以正常工作:
<sj:datepicker displayFormat="dd/mm/yy" timepicker="true" name="dateStr" value="date" /> private Date date; public void setDateStr(String dateStr){ date = new SimpleDateFormat(FORMAT,Locale.ITALIAN).parse(dateStr); } public Date getDate(){ return date; }
(或编写一个Converter)。
旁注 :timepickerFormat="HH:mm"不需要,因为HH:mm(24小时制)已经是默认格式。仅在需要12小时显示格式时才需要更改它。
timepickerFormat="HH:mm"
HH:mm