JSF primefaces カレンダーにロケールのサポートを追加しようとすると、問題が発生します。
私はロケールを渡しています & カレンダー UI サポート用のロケール js ファイルも追加しました。しかし、ユーザーがカレンダーから日付を選択すると、その後、日付を解析して日付を検証するためのJavaコードが下にあります。
現在のロケール: fr ユーザーが UI カレンダーから "21-Aoû-2015" を選択したとします。しかし、Java日付形式の場合
"21-Aug-2015" in fr locale is "21-août-2015".
同様に:
"10-Apr-2019" is "10-avr.-2019"
以下のコードを使用しています & 選択したロケールは「fr」です:
Date date = null;
boolean isDateValid = false;
for (String pattern : patterns) {
DateFormat df = new SimpleDateFormat(pattern, locale);
try {
date = df.parse(value);
String newDateString = df.format(date);
System.out.println(newDateString);
isDateValid = true;
break;
} catch (ParseException e) {
e.printStackTrace();
}
}
System.out.println("Date : " + date);
したがって、私が見つけた主な理由は、Java DateFormat パースの不一致です。例: ロケールが "fr" フランス語の場合。
Java パース:
"fr" ロケールの場合 -
Aug => 「Aoû」ではなく「août」
4月 => 「平均」「Avr」の代わりに