Struts 2 (JDK 1.7、Struts 2.2.1) アプリケーションを使用しています。このアプリケーションには、フィルター条件のリストが含まれており、文字列としてマップに格納されています。
Map< String, String > m_filters = new HashMap< String, String >();
public Map< String, String > getFilters() {
return m_filters;
}
次のような形式の URL を渡します。
マップには文字列として指定されたキーと値の両方の型がありますが、これから値を取得しようとしています
Map< String, String > filters = getFilters();
String value = filters.get( "fromDate" );
この例外がスローされます。
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
単体テストでこれを再現し、Struts 2 が各パラメーターの String ではなく String[1] を作成しているように見えることをデバッガーで確認しました。つまり、長さ 1 の文字列配列であり、文字列のみが期待値 (この場合は "0") です。
私の質問は次のとおりです。これは Struts2 のバグですか、それとも間違ったことをしていますか?
バグの場合、既知の回避策はありますか?