我正在使用Struts2-jQuery Datepicker
with the Timepicker
Addon。
假设从java.util.Date
Action
getter方法返回getMyDate()
个对象:
<sj:datepicker displayFormat="dd/mm/yy"
timepickerFormat="HH:mm"
timepicker="true"
name="myDate" />
这始终会导致日期正确填充,但timepicker
始终为00:00
。
答案 0 :(得分:1)
好的,我已经找到时间来扩展我在12月18日发现并在评论中简要提及的解决方案。
<sj:datepicker timepicker="true">
标记正确解析Date对象,但不解析其String表示形式。 这是在Issue 1057 中报告的,已接受状态但仍未修复。
有效:
<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'}" />
不使用转换器时,您需要将日期时间的格式发送到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;
}
如果你需要一个Date(你可能会这样做),你可以使用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);
}
但是由于上面提到的错误,这两种方法都不起作用。解决方案非常简单,让我在上一次对这个问题的评论中大笑:
使用字符串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;
}
(或写一个转换器)。
旁注:timepickerFormat="HH:mm"
不需要,因为HH:mm
(24小时格式)已经是默认格式。只有在需要12小时显示格式时才需要更改它。