わかりました、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:mm
12 時間表示形式が必要な場合にのみ変更する必要があります。