1

struts2.0.14 の日時ピッカー タグで直面している問題

問題は、struts2 の datetimepicker displayformat 属性を常に tomcat サーバーの日時形式に設定する必要があることです。そうしないと、送信された値が null になります。

Win 7 で日時設定を変更します。

  1. 右下隅の日付を右クリックします。
  2. 日付と時刻の設定の変更をクリックします
  3. カレンダーの設定を変更する
  4. 地域設定の変更
  5. 形式を英語 (インド) に設定

再現手順

  1. 上記のように地域設定を変更し、Tomcat サーバーを再起動します。
  2. 日時ピッカーで表示形式を使用したり、「dd/mm/yyyy」以外の表示形式を使用したりしないようになりました
  3. 2012 年 12 月 21 日の日付で struts2 フォームを送信します。
  4. In Action の提出日が null に設定されています
  5. ここで、地域設定を英語 (米国) に変更し、表示形式を使用せずにサーバーを再起動します。
  6. 実際の値は、フォームから送信されたとおりに設定されます。

期待される結果

  1. システムの日時形式が何であれ、それに応じて日付を解析し、実際に使用できるようにする必要があります。

エンヴィ:

Java 6、Struts2.0.14、Firefix 12、Tomcat 6。

プロパティなどによる回避策や修正はありますか?

*注: 答えが jquery やその他の js ライブラリ、またはアップグレードを使用することである場合は、答えないでください。

4

1 に答える 1

2

カスタム DateTime コンバーターを使用する必要があります。

xwork-conversion.properties(ない場合は作成する) ファイルに次の行を追加します。

java.util.Date = org.yourproject.common.StringToDateTimeConverter

そして、あなたの中にStringToDateTimeConverter、このようなコードがあります

import java.util.*
import java.text.DateFormat.*;

    public class StringToDateTimeConverter extends StrutsTypeConverter{

        public Object convertFromString(Map context, String[] strings, Class toClass) {     

            DateFormat DATETIME_FORMAT = getDateInstance(SHORT, Locale.getDefault());

            if (strings == null || strings.length == 0 || strings[0].trim().length() == 0) {
                return null;
            }

            try
            {
                DATETIME_FORMAT.setLenient(false);
                return DATETIME_FORMAT.parseObject(strings[0]);

            } catch (ParseException e) {
                //throw new TypeConversionException(); <-- if you want to catch conversion error
                return null;
            }
        }

        public String convertToString(Map context, Object date) {
            DateFormat DATETIME_FORMAT = getDateInstance(SHORT, Locale.getDefault());
            if (date != null && date instanceof Date) {
                return DATETIME_FORMAT.format(date);
            } else {
                return null;
            }
        }
    }

参考文献:

ロケールの Java 日付形式

http://www.roseindia.net/java/java-get-example/java-get-default-locale.shtml

于 2012-06-07T08:08:30.887 に答える