我希望从一个页面重定向到另一个页面并将其设置为模型时获取flashAttribute。我尝试使用此代码:
Map<String, ?> map = RequestContextUtils.getInputFlashMap(request);
if (map != null) {
// this is redirect
model.addAttribute("attr", map.getOrDefault("attr", false));
}
我有一个错误:
该类型的方法getOrDefault(Object,capture#3-of?) 映射不适用于参数 (String,boolean)
如何使用getOrDefault(“attr”,false)方法解决此问题?
答案 0 :(得分:3)
您需要对地图进行未选中的转换:
Map<String, Object> map =
(Map<String, Object>) RequestContextUtils.getInputFlashMap(request);
返回的地图类型中的通配符相当错误,它应该是Map<String, Object>
。
在这两种情况下,get(K)
都会返回Object
,但通配符会禁止?
类型的方法作为参数,例如V
中的put(K, V)
。可能会污染地图内容的类型正确性。
问题是,这也会影响getOrDefault(K, V)
等方法,而这些方法实际上并没有修改地图。
答案 1 :(得分:0)
对于通配符值,您可以简单地将map
的调用中的getOrDefault
强制转换为所需的值类型:
model.addAttribute("attr", ((Map<String, Boolean>) map).getOrDefault("attr", false));