したがって、システムが Date 型を正しく変換できるようにするには、Date と String の間で型変換を実行するグローバル型変換クラスを作成する必要があります。
次のようにコードをコピーします。
パッケージ com.great.util;
java.text.DateFormatをインポートします。
インポート java.text.SimpleDateFormat;
java.util.Dateをインポートします。
java.util.Mapをインポートします。
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter をインポートします。
public class DateConverter extends DefaultTypeConverter {
プライベート静的最終DateFormat[] ACCEPT_DATE_FORMATS = {
new SimpleDateFormat("dd/MM/yyyy"),
new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy/MM/dd") }; //変換用の日付形式をサポートします。
@オーバーライド
public Object ConvertValue(Map context, Object value, Class toType) {
if (toType == Date.class) { //ブラウザがサーバーに送信するときに、文字列を日付に変換します
日付 date = null;
文字列日付文字列 = null;
String[] params = (String[])value;
dateString = params[0];//日付文字列を取得します
for (DateFormat 形式 : ACCEPT_DATE_FORMATS) {
試す {
return format.parse(dateString);//サポートされている日付形式を調べて変換します
} catch(例外 e) {
続く;
}
}
null を返します。
}
else if (toType == String.class) { //サーバーがブラウザに出力するときに、Date から String 型への変換を実行します
日付 date = (日付) 値;
return new SimpleDateFormat("yyyy-MM-dd").format(date);//出力形式は yyyy-MM-dd です
}
null を返します。
}
}
ルート ディレクトリに xwork-conversion.properties ファイルを作成し、そのファイルに次のステートメントを追加してタイプ コンバータを登録します。
java.util.Date=com.great.util.DateConverter
このうち、com.great.util.DateConverter は、名前空間を含む日付変換クラスの完全名です。
そして、多くの人が終わってしまいます。
しかし、まだ成功していません。システムはエラーを報告します
「エラー (CommonsLogger.java:27) - 変換登録エラー」
「java.lang.ClassNotFoundException: com.great.util.DateConverter」
型コンバーターの登録に失敗しましたか?
注意して調べた結果、「java.util.Date=com.great.util.DateConverter」の後に余分なスペースがあることがわかりました。真実が明らかになります。スペースを削除して再度実行すると、成功しました。