一尘不染

如何正确填充 ?

jsp

我正在将Struts2-jQueryDatepickerTimepickerAddon一起使用

假设java.util.DateAction getMyDate()getter方法返回了一个对象:

<sj:datepicker displayFormat="dd/mm/yy" 
            timepickerFormat="HH:mm"
                  timepicker="true" 
                        name="myDate" />

这始终会导致正确填充日期,但timepicker始终为00:00


阅读 174

收藏
2020-06-10

共1个答案

一尘不染

好的,我已经找到时间扩展我在12月18日提出并在评论中简要提及的解决方案的时间。

问题

<sj:datepicker timepicker="true">标签正确地分析Date对象,而不是它的字符串表示。
问题

第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'}" />

当不使用Converter时,您需要将日期时间的格式发送到一个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小时显示格式时才需要更改它。

2020-06-10