【发布时间】:2019-05-16 09:00:43
【问题描述】:
我正在尝试使用地图将复选框值保存在本地存储中。这样我就可以使用地图过滤结果。我可以使用 javascript 将地图键值存储在本地存储中。但后来当我检索并将地图从本地存储传递到控制器时,我得到的地图是空值。
这是我的代码
在本地存储中存储地图
$(':checkbox[name=brand]').on('change', function() {
var assignedTo = $(':checkbox[name=brand]:checked').map(function() {
return this.id;
}).get();
localStorage.setItem('brands', JSON.stringify(assignedTo))
});
本地存储
传递给控制器
$.ajax({
type : "POST",
url : "filter",
data : {
txtMaxAge : localStorage.getItem('txtMaxAge'),
brands : JSON.parse(localStorage.getItem("brands"))
}, // parameters
success : function(result) {
// alert('changed');
}
});
控制器
@RequestMapping("/filter")
@ResponseBody
public String filter(
@RequestParam(value = "txtMaxAge", required = false) String txtMaxAge,
@RequestParam(value = "brands", required = false) Map<String, String> brands,
HttpServletRequest request, HttpServletResponse response) {
System.out.println("max"+txtMaxAge);
System.out.println("printing map----");
for (Map.Entry<String,String> entry : brands.entrySet())
System.out.println("Key = " + entry.getKey() +
", Value = " + entry.getValue());
return "send data";
}
我收到了这个错误
max10000000
printing map----
2018-12-15 13:37:59.142 WARN 13672 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver :
Resolved [java.lang.NullPointerException] to ModelAndView: reference to view with name 'error';
model is {errorTitle=Contact Your Administrator!!, errorDescription=java.lang.NullPointerException
我在这里做错了什么?
【问题讨论】:
-
将
@RequestParam(value = "brands", required = false) Map<String, String> brands改为@RequestParam(value = "brands", required = false) ArrayList<String> brands, -
@Jai Dixit
value = "brands"如果brands : ['aaa','bbb']在 JS 中将给我们一个 null 品牌。 -
@Jai Dixit @RequestParam(value = "brands", required = false) ArrayList
品牌不工作给出同样的错误。 -
@vidy
JSON.parse(localStorage.getItem("brands"))删除此不解析发送字符串化响应并使用此@RequestParam(value = "brands", required = false) List<String> brands -
@Jai Dixit 给出同样的错误。
标签: javascript java spring spring-boot