1

我有一个 ParameterMap 集,在不同的场景中具有完全不同的参数

我需要的是 ParameterMap 中的“键”字符串数组

我得到的最接近的是使用 reportParams.toString();

这是我用来获得以下输出的内容

//The Code
ParameterMap reportParams = context.getRequestParameters();
System.out.println(reportParams.toString());

// 输出

map['username' -> 'user', 'decorate' -> 'no', 'decorator' -> 'empty', 'ajax' -> 'true', '_eventId' -> 'refreshReport', 'VEFactorSelection' -> '1', 'campusAndFaculty' -> 数组['111', '113', '115', '118', '112', '114', '116', '117', '21907', ' 21908'、'99040'、'99010'、'99100'、'99230'、'99240']、'_flowExecutionKey' -> 'e4s1'、'reportLanguage' -> '3'、'date' -> '2013/ 06/20', 'nameType2' -> '1', 'confirm' -> 'true']

所以我想要的最终结果是

用户名、装饰、装饰器、ajax、_ecentId、VEFactorSelection、campusAndFaculty、_flowExecutionKey、reportLanguage、日期、nameType2、确认

作为数组中的字符串

================================所以代码现在看起来像:

ParameterMap reportParams = context.getRequestParameters();

final List<String> names = new ArrayList<String>();

for (final Object o: reportParams.asMap().keySet())
names.add((String) o);

final String[] array = names.toArray(new String[names.size()]);

System.out.println(array[0]);

最终结果:

==================================== org.springframework.beans.ConversionNotSupportedException:无法转换类型的属性值'java.util.LinkedHashMap' 到属性'readOnlyConfiguredExporters' 所需的类型'org.hibernate.mapping.Map';嵌套异常是 java.lang.IllegalStateException:无法将类型 [java.util.LinkedHashMap] 的值转换为属性“readOnlyConfiguredExporters”所需的类型 [org.hibernate.mapping.Map]:找不到匹配的编辑器或转换策略

================================ 一些额外的

这是“ParameterMap”的API http://static.springsource.org/spring-webflow/docs/1.0.x/api/org/springframework/webflow/core/collection/ParameterMap.html

4

3 回答 3

3

AParameterMap实现MapAdaptable,它必须.asMap()返回一个Map. 我不知道你的版本是否使用泛型;如果是这样,这很容易:

final List<String> names = new ArrayList<String>(map.asMap().keySet());

如果没有:

final List<String> names = new ArrayList<String>();

for (final Object o: map.asMap().keySet())
    names.add((String) o);

之后,如果您真的想要 aString[]而不是 a List<String>,请使用:

final String[] array = list.toArray(new String[list.size()]);
于 2013-06-20T13:55:08.843 回答
0

您可以使用:

String names[] = reportParams.keySet().toArray(new String[0]);
于 2013-06-20T13:57:04.867 回答
0

如果它真的是一个Map,就做map.keySet().toArray()

于 2013-06-20T13:54:17.760 回答