1

AddonでStruts2-jQueryDatepickerTimepicker使用しています。

java.util.DateオブジェクトがAction getMyDate()getter メソッドから返されると仮定します。

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

これにより、常に日付が正しく入力されますが、timepicker常に00:00.

4

1 に答える 1

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

コンバーターを使用しない場合、日時の形式を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;
}

日付が必要な場合 (おそらく必要です)、日付と文字列の間の解析と書式設定を処理する文字列のゲッターとセッターを使用できます。

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 セッターと Date ゲッターを使用すると、完全に機能します。

<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;
}

(またはコンバーターを作成します)。

補足: (24 時間形式) が既に既定の形式であるtimepickerFormat="HH:mm"ため、必要ありません。HH:mm12 時間表示形式が必要な場合にのみ変更する必要があります。

于 2014-12-18T10:38:25.907 に答える