如何在“ParameterMap”中获取参数名称的String数组(在Java中)

时间:2013-06-20 13:50:55

标签: java collections map

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

我需要的是ParameterMap

中的“键”字符串数组

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

这是我以前得到的输出

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

//输出

map ['username' - > 'user','decorate' - > '不','装饰' - > '空','ajax' - > 'true','_ eventId' - > 'refreshReport','VEFactorSelection' - > '1','campusAndFaculty' - > array ['111','113','115','118','112','114','116','117','21907','21908','99040','99010', '99100','99230','99240'],'_ flowExecutionKey' - > 'e4s1','reportLanguage' - > '3','日期' - > '2013/06/20','nameType2' - > '1','确认' - > '真']

所以我想要的最终结果是

用户名, 装饰, 装饰, 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

3 个答案:

答案 0 :(得分:3)

ParameterMap实施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);

之后,如果确实想要String[]而不是List<String>,请使用:

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

答案 1 :(得分:0)

如果它真的是Map,请执行map.keySet().toArray()

答案 2 :(得分:0)

您可以使用:

String names[] = reportParams.keySet().toArray(new String[0]);