我有一个在不同情况下参数完全不同的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'-> 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','confirm'->'true']

所以我想要的最终结果是

用户名,
装饰,
装饰师
阿贾克斯
_ecentId,
VEFactorSelection,
校园和学院,
_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:无法将属性“ readOnlyConfiguredExporters”的[java.util.LinkedHashMap]类型的值转换为所需的[org.hibernate.mapping.Map]类型:未找到匹配的编辑器或转换策略

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

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

最佳答案

ParameterMap实现MapAdaptable,该.asMap()具有Map返回String[]。我不知道您的版本是否使用泛型。如果是这样,这很容易:

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);


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

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

07-25 21:04