Spring RedirectAttributes

时间:2015-10-08 04:46:42

标签: spring spring-mvc

我们如何使用spring RedirectAttributes添加具有相同名称和多个值的属性,例如,如果我有HTTP请求参数说place=london&place=paris,并且我想重定向这些" place&# 34; redirectAttribute中的参数。

redirectAttribute.addAttribute("place",places??)

我不想使用flash属性。

有可能吗?

2 个答案:

答案 0 :(得分:1)

我真的很沮丧,似乎并不是一个更清洁的解决方案,但我遇到了同样的问题并最终做了:

((HashMap<String, Object>) redirectAttrs).putIfAbsent("place", 
                                                      Arrays.asList("london", "paris"));

这是有效的,因为它绕过RedirectAttributes在添加时通常会将所有内容转换为String的方式,因为它们忘记覆盖putIfAbsent方法......

它有效(暂时),但我当然不推荐它。

答案 1 :(得分:0)

您可以使用mergeAttributes方法:

String[] attrArray = {"london", "paris"};
Map<String, String[]> attrMap = new HashMap<>();
attrMap.put("place", attrArray);
redirectAttrs.mergeAttributes(attrMap);

这将创建一个包含请求参数的URL,如下所示:place=london%2Cparis(其中%2C是逗号的十六进制ASCII码键),相当于place=london&place=paris