我有一个 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 的键和值类型,尝试从中获取值
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[1] 而不是一个 String。即它是一个长度为 1 的字符串数组,唯一的字符串是预期值(在本例中为“0”)。
我的问题是:这是 Struts2 中的错误,还是我做错了什么?
如果是错误,是否有已知的解决方法?