IE 11で日付解析の問題が発生しています。Edgeでも発生しているようです。次のJavaコードを見てください。以下のコードは、フォームが送信されるコントローラメソッドの一部です。Internet Explorerのコントローラにフォームを送信すると、Java日付形式の解析機能が失敗する
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
stream.setAutoExpireDate(dateFormat.parse(request.getParameter("autoExpireDate")));
request.getParameter( "autoExpireDate")の出力は "05/30/2018"です。
解析は、その文字列を渡して、その特定の日付形式に呼び出されると、それは次のようDateFormat.java機能ヒット:何らかの理由で
public Date parse(String source) throws ParseException
{
ParsePosition pos = new ParsePosition(0);
Date result = parse(source, pos);
if (pos.index == 0)
throw new ParseException("Unparseable date: \"" + source + "\"" ,
pos.errorIndex);
return result;
}
を、そして唯一のIE /エッジで、私は次のことを得続けますエラー:
Unparseable date: "05/30/2018"
なぜこれが「解析不可能な」日付であるのか非常に混乱しています。同じ日付文字列は、アプリケーションからフォームを送信するときにChromeとFirefoxでうまく機能しているようです。
明らかに、parse関数のpos.index == 0は、値が渡されたときに0に等しくなりますが、どのような理由でですか?なぜIE/Edgeがこのように動作するのでしょうか?
不明な点がございましたらお詫び申し上げます。お気軽に質問してください。私はさらに明確にします。どんな助けでも大歓迎です。
よろしく、
MotoDave452
UPDATE:request.getParameter( "autoExpireDateは") "/ 2018分の30 05"、の違いをチェックアウト等しい文字列がありますがIEとChromeを比較した場合の実際の価値
IE:
クローム:
私はあなたがJavaコードは、ブラウザの種類に依存してはならないことを知っていると確信しています。 :)悪いケースや良いケースでは、実際に文字列(ソース)の内部にあるものを深くチェックしてください。彼らは異なっていなければなりません。類似している場合はgetChars()をチェックしてください。 –
私は確かに認識していますが、明確にしていただきありがとうございます:)私はそれがサーバー側のコントローラメソッドに渡されているときに、IEが "autoExpireDate"のリクエストパラメータ値をどのように処理しているのだろうと考えています。詳細については、以下の回答への私の回答をご覧ください。 – MotoDave452
上記のオリジナルの質問に投稿した更新を見ることもできます。 @Evgeny Zhuravlev氏の洞察をいただきありがとうございます。私の問題を解決するのに役立ちました。 – MotoDave452