@RequestParam和@ModelAttribute一起使用没效果

public String toHistoryRecordDetail(@RequestParam @ModelAttribute Map<String, String> map) {
        return "history_detail";
}

 此处后端在map上一起使用了@RequestParam和@ModelAttribute两个注解。

 

history_detail.jsp页面中如下,无法获取到map的值

<input type="hidden" id="recordId" value="${map.recordId}">
<input type="hidden" id="type" value="${map.type}">

 

请大佬们帮忙分析一下

关于spring mvc中的两个注解:@RequestParam、@ModelAttribute区别,原先并没有特别注意,直到最近找别人开发的一个小模块的bug时,才有意识的比较了两者的区别。

1、@RequestParam,@RequestParam("xx") 表示在前端传递过来的参数中必须有个参数名称为“xx”(可以使用required=false避免必须)

2、@ModelAttribute,@ModelAttribute("xx") 表示将前端传递过来的参数按照名称注入到对应的对象中,“xx”只是表示放到ModelMap中的key值

如果获取单独获取参数的话,只能写一个 @RequestParam

如果是希望将获取的参数再带到跳转的页面使用,可以试试ModelMap

@RequestMapping("地址") //你需要转向的地址

public String toHistoryRecordDetail(@RequestParam  Map<String, String> map,Model model) {

model.put("map",map);

return "history_detail";

}

这样试试